Week07_네트워크 보안

Week 07 · 2과목 네트워크 보안

미리 외워둘 숫자 (2과목 전체 공통)

구분 값
TCP 플래그 비트 FIN 0x01 · SYN 0x02 · RST 0x04 · PSH 0x08 · ACK 0x10 · URG 0x20 (+ ECE 0x40, CWR 0x80)
IP 프로토콜 번호 ICMP 1 · IGMP 2 · TCP 6 · UDP 17 · GRE 47 · ESP 50 · AH 51 · OSPF 89
ICMP 타입 Echo Reply 0 · Dest Unreachable 3 (code 3 = Port Unreachable) · Redirect 5 · Echo Request 8 · Time Exceeded 11
자주 나오는 포트 echo 7 · chargen 19 · DNS 53 · NTP 123 · NetBIOS 137/138/139 · SNMP 161 · LDAP/CLDAP 389 · SMB 445 · IKE 500 · L2TP 1701 · PPTP 1723 · SSDP 1900 · NAT-T 4500 · Memcached 11211

Day 1 · DoS / DDoS

1-1. 개념: 가용성(Availability)을 노리는 공격

DoS(Denial of Service, 서비스 거부) 는 정보를 훔치거나 바꾸는 것이 아니라 서비스를 못 쓰게 만드는 것이 목적이다. CIA 중 A(가용성) 를 공격한다. 시스템의 유한한 자원 — ① 네트워크 대역폭, ② 서버의 연결 테이블·메모리·CPU, ③ 애플리케이션의 스레드·세션 — 중 하나를 고갈시키거나, ④ 프로토콜 구현 버그를 건드려 시스템을 멈추게 한다.

구분 DoS DDoS DRDoS
공격 출발점 1대 다수 좀비(봇넷) 정상 서버(반사체)
출발지 IP 실제 또는 위조 좀비 실제 IP 또는 위조 피해자 IP로 위조 (필수)
좀비 감염 필요 X O X (반사체는 감염 아님)
추적 쉬움 어려움 매우 어려움 (반사체만 보임)
핵심 대응 출발지 차단 임계치, 클린존, Anti-DDoS 반사체 설정 강화, 위조 IP 필터링(BCP38)

1-2. 공격 분류 (어떤 자원을 고갈시키나)

분류 고갈 대상 대표 공격 계층
대역폭 소진형 (Volumetric) 회선 대역폭 (bps) UDP Flood, ICMP Flood, DRDoS 증폭 3~4
자원 소진형 (Protocol) 서버/방화벽 세션 테이블, CPU (pps) SYN Flood, ACK Flood, Land 4
애플리케이션형 (Layer 7) 웹서버 스레드·DB·커넥션 (rps) HTTP GET Flood, CC Attack, Slowloris, RUDY, Slow Read 7
취약점형 (구식, 패치로 해결) OS 재조합 루틴의 버그 Ping of Death, Teardrop, Bonk/Boink, Land 3

대역폭 소진형은 회선이 먼저 막히므로 서버 앞 장비로는 못 막는다 → ISP·클린존·CDN 같은 상위 단에서 막아야 한다. 애플리케이션형은 트래픽이 적어 정상처럼 보이므로 임계치·행위 분석이 필요하다.


1-3. SYN Flooding ★★★

원리 (단계별)

  1. 공격자가 서버의 열린 포트(예: 80)로 SYN만 대량 전송한다. 출발지 IP는 보통 존재하지 않는 IP로 위조한다.
  2. 서버는 정상 절차대로 SYN+ACK를 보내고, 연결 정보를 백로그 큐(Backlog Queue, half-open 연결 대기열) 에 넣은 뒤 SYN_RECV 상태로 ACK를 기다린다.
  3. 위조된 IP는 실제로 없거나 SYN을 보낸 적이 없으므로 마지막 ACK가 오지 않는다. 서버는 SYN+ACK를 몇 번 재전송하며 타임아웃(리눅스 기본 약 1분대)까지 기다린다.
  4. 그 사이 백로그 큐가 꽉 차면 새로운 정상 SYN이 버려진다 → 정상 사용자 접속 불가.

왜 되나? TCP는 상태(state)를 가진 프로토콜이라 서버가 3-way handshake를 완료하기 전에도 자원을 먼저 할당한다. 그리고 IP에는 출발지 인증이 없어 위조가 가능하다.

sequenceDiagram
    participant A as 공격자(위조 IP)
    participant S as 서버:80
    participant X as 위조된 IP(존재X)
    A->>S: SYN (src=1.2.3.4 위조)
    Note over S: 백로그 큐에 등록, SYN_RECV
    S->>X: SYN+ACK
    Note over X: 응답 없음(ACK 안 옴)
    A->>S: SYN (src=5.6.7.8 위조)
    A->>S: SYN (src=9.9.9.9 위조)
    Note over S: 큐 가득 참 - 정상 SYN 폐기

백로그 큐 그림

 서버의 Half-open 대기열 (backlog = 8 이라 가정)
 ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
 │1.2.3.4 │5.6.7.8 │9.9.9.9 │7.7.1.2 │3.3.3.3 │8.1.1.9 │6.2.2.2 │4.4.4.4 │ ← 모두 SYN_RECV
 └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
                                                        정상 사용자 SYN → ✗ DROP
 각 칸은 ACK가 올 때까지(또는 타임아웃까지) 비워지지 않는다.

탐지 1 — netstat -an (리눅스, 피해 서버에서)

$ netstat -an | grep ':80 '
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 192.168.10.5:80         45.33.12.7:38012        SYN_RECV
tcp        0      0 192.168.10.5:80         172.89.4.201:11930      SYN_RECV
tcp        0      0 192.168.10.5:80         61.19.200.33:52101      SYN_RECV
tcp        0      0 192.168.10.5:80         118.7.94.6:2304         SYN_RECV
tcp        0      0 192.168.10.5:80         10.20.30.40:51234       ESTABLISHED

$ netstat -an | grep SYN_RECV | wc -l
1024

탐지 2 — tcpdump

$ tcpdump -nn -i eth0 'tcp[tcpflags] & tcp-syn != 0 and dst port 80'
14:02:11.000112 IP 45.33.12.7.38012 > 192.168.10.5.80: Flags [S], seq 1830219455, win 512, length 0
14:02:11.000118 IP 172.89.4.201.11930 > 192.168.10.5.80: Flags [S], seq 99812011, win 512, length 0
14:02:11.000124 IP 61.19.200.33.52101 > 192.168.10.5.80: Flags [S], seq 4012993871, win 512, length 0
14:02:11.000131 IP 192.168.10.5.80 > 45.33.12.7.38012: Flags [S.], seq 2210388210, ack 1830219456, win 64240, options [mss 1460], length 0
14:02:11.000135 IP 118.7.94.6.2304 > 192.168.10.5.80: Flags [S], seq 771203345, win 512, length 0

대응

대응 설명
SYN Cookie ★ 백로그 큐에 저장하지 않고, 연결 정보(출발지·목적지·시간·MSS)를 해시해 SYN+ACK의 초기 순서번호(ISN)에 인코딩. 정상 클라이언트가 ACK(ack = ISN+1)를 보내면 그 값을 검증해 그때 연결 생성. 큐가 차지 않는다. 리눅스 net.ipv4.tcp_syncookies = 1
백로그 큐 증가 net.ipv4.tcp_max_syn_backlog 증가 → 버티는 시간만 늘림(근본 대책 X)
SYN+ACK 재전송 횟수/타임아웃 단축 net.ipv4.tcp_synack_retries 감소 → half-open이 빨리 비워짐
First SYN Drop 첫 SYN은 일부러 버린다. 정상 클라이언트는 재전송하지만, 위조 도구는 재전송하지 않는 경우가 많다
출발지별 SYN 임계치 방화벽/IPS에서 초당 SYN 수 제한 (iptables --syn -m limit, Day 5)
SYN Proxy 방화벽/Anti-DDoS 장비가 서버 대신 3-way handshake를 완료해본 뒤 정상만 서버에 넘김

1-4. Land 공격

 [ src 192.168.10.5:80 → dst 192.168.10.5:80 , SYN ]
            └─────────── 같은 주소 ───────────┘

1-5. Smurf / Fraggle ★★★

Smurf 원리

  1. 공격자는 ICMP Echo Request(type 8) 를 만든다. 출발지 IP는 피해자 IP로 위조.
  2. 목적지는 증폭 네트워크의 Directed Broadcast 주소(예: 10.1.1.255)로 보낸다.
  3. 그 네트워크의 라우터가 directed broadcast를 허용하면, 서브넷의 모든 호스트가 요청을 받는다.
  4. 모든 호스트가 Echo Reply(type 0) 를 출발지 = 피해자에게 보낸다 → 1개 요청이 N배로 증폭.
                    ICMP Echo Request
 공격자 ───────────────────────────────────▶ 라우터 ── 10.1.1.255 (브로드캐스트)
 (src = 피해자 IP 위조)                         │
                                ┌───────────┬───┴───────┬───────────┐
                              호스트1     호스트2      호스트3 ...   호스트N   ← 증폭 네트워크
                                │           │           │           │
                                └─── Echo Reply × N ────┴───────────┘
                                              ▼
                                          ▶ 피해자 ◀  (대역폭 고갈)

Smurf 3요소 (암기): ICMP Echo + Directed Broadcast + 출발지 위조

1-6. Ping of Death

1-7. Teardrop / Bonk / Boink ★★

정상 단편화 복습: 1500 MTU에서 4000바이트 데이터를 보내면 IP 헤더(20)를 뺀 1480바이트씩 나뉜다. Fragment Offset 필드는 8바이트 단위다.

 [정상]  ID=0x1a2b
 Frag1: MF=1, offset=0    (0×8=0)       → 데이터 0     ~ 1479
 Frag2: MF=1, offset=185  (185×8=1480)  → 데이터 1480  ~ 2959
 Frag3: MF=0, offset=370  (370×8=2960)  → 데이터 2960  ~ 3999
        0          1480         2960        4000
        |──Frag1───|────Frag2────|───Frag3───|   (빈틈·겹침 없음)
 [Teardrop]  ID=0x1a2b
 Frag1: MF=1, offset=0    → 데이터 0   ~ 1479
 Frag2: MF=0, offset=100  (100×8=800) , 길이 400 → 데이터 800 ~ 1199
        0       800    1200      1480
        |───────Frag1───────────|
                |Frag2|                ← Frag2가 Frag1 안에 통째로 겹침
 재조합 루틴: "이번 단편 끝(1200) - 이전 단편 끝(1480) = -280"
            → 음수 길이를 복사 크기로 사용 → 메모리 오류, 시스템 다운

1-8. UDP / ICMP Flooding

1-9. 애플리케이션 계층(L7) DDoS ★★

TCP 연결은 정상적으로 완료된 뒤 HTTP 요청으로 공격하므로 IP 위조가 불가능하다(3-way handshake를 끝내야 하므로). 대신 패킷 수가 적고 정상 요청과 비슷해 탐지가 어렵다.

공격 원리 대응
HTTP GET Flooding 정상 GET 요청을 대량 전송 → 웹서버·DB 부하 출발지별 요청 임계치, CAPTCHA/JS 챌린지, 캐싱, CDN
CC Attack (Cache-Control) Cache-Control: no-cache / Pragma: no-cache 헤더로 캐시 서버를 우회해 원 서버가 매번 응답하게 함 해당 헤더 패턴 + 임계치 차단
동적 HTTP Request Flooding 요청 URL을 계속 바꿔 시그니처 차단 회피 행위 기반 탐지
Slowloris (Slow Header) 요청 헤더를 끝내는 빈 줄(\r\n\r\n)을 보내지 않고 조금씩 헤더를 추가 → 서버가 연결을 계속 붙잡음 헤더 수신 타임아웃, 출발지별 동시 연결 제한, mod_reqtimeout
RUDY (R-U-Dead-Yet, Slow POST) Content-Length를 크게 선언하고 바디를 1바이트씩 매우 느리게 전송 바디 수신 타임아웃, 최소 전송 속도
Slow Read 클라이언트가 TCP 윈도우 크기를 0 또는 아주 작게 광고해 서버 응답을 천천히 읽음 → 서버 송신 버퍼·연결 점유 비정상적으로 작은 윈도우 연결 차단, 타임아웃
HTTP 헤더 옵션 공격 비정상적으로 많은/긴 헤더로 파싱 부하 헤더 크기 제한

Slowloris 요청 모습 (헤더가 끝나지 않음)

GET /index.html HTTP/1.1\r\n
Host: www.victim.example\r\n
User-Agent: Mozilla/5.0\r\n
X-a: b\r\n              ← 10초 후
X-c: d\r\n              ← 또 10초 후 ... 빈 줄(\r\n)은 영원히 안 옴

HTTP GET Flooding — Apache access.log 분석

203.0.113.45 - - [22/Dec/2026:14:03:11 +0900] "GET / HTTP/1.1" 200 5123 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
203.0.113.45 - - [22/Dec/2026:14:03:11 +0900] "GET / HTTP/1.1" 200 5123 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
203.0.113.45 - - [22/Dec/2026:14:03:11 +0900] "GET / HTTP/1.1" 200 5123 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
198.51.100.7 - - [22/Dec/2026:14:03:11 +0900] "GET /search.php?q=a83kd HTTP/1.1" 200 18233 "-" "-"
198.51.100.7 - - [22/Dec/2026:14:03:11 +0900] "GET /search.php?q=x1p0z HTTP/1.1" 503 299 "-" "-"
# 초당 요청이 많은 IP 상위 5개 뽑기 (로그 분석 실기 단골)
$ awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -5
  48213 203.0.113.45
  31877 198.51.100.7
    142 10.20.30.40
     88 10.20.30.41
     51 10.20.30.77

1-10. DRDoS (반사·증폭) ★★★

sequenceDiagram
    participant A as 공격자/봇
    participant R as 반사 서버(DNS, NTP 등)
    participant V as 피해자
    A->>R: 작은 요청 60B (src=피해자 IP 위조)
    Note over R: 정상 요청으로 보고 응답
    R->>V: 큰 응답 3000B (증폭)
    A->>R: 작은 요청 반복
    R->>V: 큰 응답 반복
    Note over V: 요청한 적 없는 응답 폭주 - 대역폭 고갈
반사 프로토콜 포트 증폭에 쓰이는 요청 대략의 증폭률 대응
DNS UDP 53 ANY 질의, 큰 TXT/DNSSEC 레코드 약 28~54배 오픈 리졸버 차단(재귀 질의를 내부만 허용), RRL(응답 속도 제한)
NTP UDP 123 monlist 명령(최근 접속 600개 목록) 약 550배 monlist 비활성화(disable monitor), ntpd 업데이트
SSDP UDP 1900 M-SEARCH (UPnP 기기) 약 30배 외부에서 UPnP 차단
SNMP UDP 161 GetBulk 약 6배 커뮤니티 문자열 변경, 외부 차단
CharGEN UDP 19 아무 데이터 약 350배 서비스 비활성화
CLDAP UDP 389 rootDSE 질의 약 56~70배 외부 389/UDP 차단
Memcached UDP 11211 stats/get 수만 배 (최대 약 51,000) UDP 비활성화, 외부 노출 금지

1-11. DDoS 공격 구조와 도구

           ┌──────────┐
           │  공격자   │  (Attacker / Client)
           └────┬─────┘
       명령 하달 │  (C&C 채널: IRC, HTTP, P2P ...)
      ┌─────────┼──────────┐
 ┌────▼───┐ ┌───▼────┐ ┌───▼────┐
 │마스터1 │ │마스터2 │ │마스터3 │   (Master / Handler / C&C 서버)
 └──┬──┬──┘ └──┬──┬──┘ └──┬──┬──┘
    │  │       │  │       │  │
   에이전트·데몬·좀비(봇) 수천 대    (Agent / Daemon / Bot)
    └──┴───────┴──┴───────┴──┘
               │ 동시 공격
               ▼
            [ 피해자 ]
도구 특징
Trinoo 최초의 대표적 DDoS 도구. UDP Flood, 마스터-데몬 구조
TFN (Tribe Flood Network) UDP·ICMP·SYN Flood·Smurf 등 여러 공격 지원, 통신에 ICMP Echo Reply 사용
TFN2K TFN 개량. 통신 암호화, 무작위 포트/프로토콜로 탐지 회피
Stacheldraht Trinoo + TFN 장점 결합, 공격자-마스터 간 암호화 통신, 에이전트 자동 업데이트
Mirai IoT 기기(기본 계정 사용) 감염 봇넷

1-12. DDoS 대응 체계 ★★

① 단계별 대응

단계 하는 일
사전 준비 대응 조직·연락망(ISP, KISA), 평시 트래픽 기준선(Baseline) 측정, 대역폭 여유, 클린존 계약
탐지 트래픽 급증, 세션 수·SYN_RECV 증가, 임계치 초과 알림
분석 공격 유형(대역폭/세션/L7) 파악, 출발지·패턴 분석
차단(완화) 임계치 차단, 우회(클린존), 블랙홀 라우팅, 서비스 축소
사후 로그 보존, 원인 분석, 재발 방지, 좀비 PC 치료

② 주요 기술

기술 설명
임계치(Threshold) 기반 차단 출발지별·서비스별 pps/bps/rps 한도를 넘으면 차단. 평소 트래픽 기준선을 알아야 정할 수 있음
Anti-DDoS 장비 서버 앞 인라인. SYN Proxy, 출발지 인증(쿠키/JS 챌린지), 프로토콜 이상 검사, 임계치
클린존 (Clean Zone, 스크러빙 센터) 공격 시 DNS 변경 또는 BGP 경로 변경으로 트래픽을 대용량 정제 센터로 우회 → 공격 트래픽은 걸러내고 정상 트래픽만 원 서버로 전달. KISA 사이버대피소가 대표적(중소기업 대상)
CDN 콘텐츠를 전 세계 엣지 서버에 분산·캐싱 → 공격이 여러 엣지로 흩어지고 원 서버(Origin)가 숨겨짐
블랙홀 라우팅 (RTBH) 피해 IP로 가는 트래픽을 ISP 단에서 Null0로 폐기. 회선은 살리지만 피해 IP 서비스도 중단됨(최후 수단)
싱크홀 (Sinkhole) 악성 도메인/트래픽을 분석용 서버로 유도 → 좀비 PC 식별

③ 출발지 IP 위조 방지 — Ingress/Egress 필터링, uRPF, BCP38 ★

           [uRPF Strict]
 패킷 도착: src=10.9.9.9, 입력 인터페이스 = Gi0/1
 라우팅 테이블 조회: 10.9.9.9 → Gi0/2 로 나가야 함
 → 들어온 곳(Gi0/1) ≠ 돌아갈 곳(Gi0/2) → DROP (위조로 판단)

⚠️ 시험 함정 (Day 1)

📌 기출 포인트 (Day 1)

✏️ 확인 문제 (Day 1)

Q1. 다음 설명에 해당하는 공격은?
"공격자는 출발지 주소를 피해 시스템으로 위조한 ICMP Echo Request를 특정 네트워크의 브로드캐스트 주소로 전송한다."
① Land ② Smurf ③ Fraggle ④ Teardrop

Q2. SYN Flooding 공격에 대한 대응으로 옳지 않은 것은?
① SYN Cookie 기능을 활성화한다.
② 백로그 큐의 크기를 줄여 half-open 연결을 빨리 정리한다.
③ SYN+ACK 재전송 횟수를 줄여 대기 시간을 단축한다.
④ 출발지별 초당 SYN 패킷 수에 임계치를 둔다.

Q3. 다음 중 출발지 IP 위조가 사실상 불가능한 공격은?
① SYN Flooding ② Smurf ③ Slowloris ④ DNS 증폭 공격

Q4. IP 단편의 Fragment Offset 값을 서로 겹치게 조작해 재조합 과정에서 오류를 일으키는 공격은?
① Ping of Death ② Land ③ Teardrop ④ Fraggle

Q5. 라우터가 수신 패킷의 출발지 주소로 가는 경로를 라우팅 테이블에서 역조회하여, 그 경로가 패킷이 들어온 인터페이스와 다르면 폐기하는 기법은?
① uRPF Strict 모드 ② uRPF Loose 모드 ③ 블랙홀 라우팅 ④ Egress 필터링

Q6. DRDoS 공격에서 증폭률이 매우 커 2018년 대규모 공격에 사용되었고, UDP 11211 포트를 사용하는 서비스는?
① NTP ② SSDP ③ Memcached ④ CLDAP


Day 2 · 스캐닝

2-1. 개념: 공격 전에 지도를 그린다

공격자는 보통 다음 순서로 정보를 모은다.

 ① 풋프린팅 (Footprinting)  : 공개 정보 수집 — whois, DNS 조회(nslookup/dig), 검색엔진, 홈페이지, SNS
        ↓
 ② 스캐닝 (Scanning)        : 살아 있는 호스트 → 열린 포트 → 서비스·버전 → OS 확인
        ↓
 ③ 목록화 (Enumeration)     : 계정, 공유 폴더, 배너, SNMP 정보 등 구체적 정보 추출
        ↓
 ④ 취약점 스캔 / 공격

2-2. 호스트 탐색 (Host Discovery, Ping Sweep)

방법 보내는 것 살아 있다는 증거 비고
ICMP Echo type 8 type 0 (Echo Reply) 방화벽이 ICMP를 많이 막음
ICMP Timestamp / Address Mask type 13 / 17 type 14 / 18 Echo가 막혔을 때 우회
ARP 스캔 ARP Request ARP Reply 같은 LAN에서는 가장 확실 (ARP는 막기 어려움)
TCP SYN Ping SYN → 80/443 SYN+ACK 또는 RST 어느 쪽이든 응답이 오면 "살아 있음"
TCP ACK Ping ACK → 80 RST 상태 없는 필터 우회
UDP Ping UDP → 닫힌 포트 ICMP Port Unreachable

2-3. 포트 스캔 종류별 동작 ★★★

포트 상태 (Nmap 표기)

상태 의미
open 서비스가 연결을 받고 있음
closed 접근은 되지만 서비스 없음 (RST 응답)
filtered 방화벽 등이 막아 응답 없음 또는 ICMP Unreachable(type 3, code 1/2/3/9/10/13)
unfiltered ACK 스캔에서 RST가 옴 = 방화벽이 막지 않음 (열림/닫힘은 모름)
open|filtered 무응답이라 열린 건지 막힌 건지 구분 불가 (FIN/NULL/XMAS/UDP)

(1) TCP Connect 스캔 -sT

운영체제의 connect() 시스템 콜을 그대로 써서 3-way handshake를 완료한다. 관리자 권한이 필요 없지만, 연결이 완성되므로 대상 서버의 애플리케이션 로그에 남는다.

sequenceDiagram
    participant N as 스캐너
    participant T as 대상
    Note over N,T: 열린 포트
    N->>T: SYN
    T->>N: SYN+ACK
    N->>T: ACK (연결 완료)
    N->>T: RST+ACK (바로 종료)
    Note over N,T: 닫힌 포트
    N->>T: SYN
    T->>N: RST+ACK

(2) TCP SYN 스캔 (Half-open, Stealth) -sS ★

SYN을 보내고 SYN+ACK가 오면 열린 것, 곧바로 RST를 보내 연결을 끊는다. 3-way handshake를 완료하지 않으므로 애플리케이션 로그에 남지 않는다(단, 방화벽·IDS에는 남는다). Raw 소켓이 필요해 root 권한 필요. Nmap의 기본 스캔(root일 때).

sequenceDiagram
    participant N as 스캐너
    participant T as 대상
    Note over N,T: 열린 포트
    N->>T: SYN
    T->>N: SYN+ACK
    N->>T: RST (완료하지 않고 끊음)
    Note over N,T: 닫힌 포트
    N->>T: SYN
    T->>N: RST+ACK
    Note over N,T: 필터링(방화벽)
    N->>T: SYN
    Note over T: 무응답 또는 ICMP Unreachable

(3) FIN / NULL / XMAS 스캔 -sF -sN -sX ★★

스캔 설정하는 플래그 플래그 값
FIN FIN 0x01
NULL 아무것도 없음 0x00
XMAS FIN + PSH + URG (크리스마스 트리처럼 불이 켜짐) 0x29 (= 0x01+0x08+0x20)
sequenceDiagram
    participant N as 스캐너
    participant T as 대상(리눅스/유닉스)
    Note over N,T: 열린 포트
    N->>T: FIN 또는 NULL 또는 FIN+PSH+URG
    Note over T: 무응답(조용히 버림)
    Note over N,T: 닫힌 포트
    N->>T: FIN 또는 NULL 또는 FIN+PSH+URG
    T->>N: RST+ACK

(4) ACK 스캔 -sA — 방화벽 규칙 확인용

ACK만 보낸다. 열린 포트든 닫힌 포트든 필터가 없으면 RST가 돌아온다 → 열림/닫힘이 아니라 "필터링 여부" 를 알아낸다.

sequenceDiagram
    participant N as 스캐너
    participant F as 방화벽
    participant T as 대상
    N->>T: ACK
    T->>N: RST (unfiltered - 상태 없는 필터 통과)
    N->>F: ACK
    Note over F: 상태 기반 방화벽이 세션 없는 ACK 폐기
    Note over N: 무응답 = filtered

(5) UDP 스캔 -sU

UDP는 handshake가 없다. 닫힌 포트는 ICMP Port Unreachable(type 3, code 3) 를 돌려준다. 열린 포트는 보통 무응답(서비스가 응답하면 open 확정).

sequenceDiagram
    participant N as 스캐너
    participant T as 대상
    Note over N,T: 닫힌 포트
    N->>T: UDP 패킷
    T->>N: ICMP type3 code3 Port Unreachable
    Note over N,T: 열린 포트
    N->>T: UDP 패킷
    Note over T: 무응답(open 또는 filtered) 또는 UDP 응답(open)

(6) Idle 스캔 -sI — 출발지를 완전히 숨김

IP 헤더의 Identification(IPID) 필드가 패킷마다 1씩 증가하는 "한가한(idle)" 좀비 호스트를 이용한다. 공격자 IP는 대상에게 전혀 노출되지 않는다.

sequenceDiagram
    participant A as 공격자
    participant Z as 좀비(한가한 호스트)
    participant T as 대상
    A->>Z: SYN+ACK (IPID 탐색)
    Z->>A: RST (IPID=1000)
    A->>T: SYN (src=좀비 IP로 위조)
    T->>Z: SYN+ACK (포트가 열린 경우)
    Z->>T: RST (IPID=1001 소비)
    A->>Z: SYN+ACK (다시 탐색)
    Z->>A: RST (IPID=1002)
    Note over A: 2 증가 = 열림, 1 증가 = 닫힘 또는 필터링

(7) 그 밖의 회피 기법

기법 Nmap 설명
디코이 (Decoy) -D RND:10 위조된 여러 출발지 IP를 섞어 진짜 스캐너를 숨김
단편화 -f TCP 헤더를 작은 IP 단편으로 쪼개 단순 IDS 회피
타이밍 -T0(Paranoid) ~ -T5(Insane) 느리게 스캔해 임계치 기반 탐지 회피
출발지 포트 지정 --source-port 53 DNS 응답처럼 보이게 해 허술한 규칙 통과
Firewalking (firewalk 도구) TTL을 방화벽 바로 뒤에서 만료되게 조절해 어떤 포트가 방화벽을 통과하는지 알아냄

2-4. 스캔 비교 요약표 ★

스캔 옵션 보내는 플래그 열린 포트 닫힌 포트 특징
TCP Connect -sT SYN SYN+ACK → ACK (연결 완료) RST+ACK 권한 불필요, 로그 남음
SYN -sS SYN SYN+ACK → 스캐너가 RST RST+ACK Half-open, Stealth, root 필요
FIN -sF FIN 무응답 RST Windows에 안 통함
NULL -sN 없음 무응답 RST
XMAS -sX FIN+PSH+URG 무응답 RST
ACK -sA ACK RST (unfiltered) RST (unfiltered) 필터링 여부 확인
UDP -sU (UDP) 무응답/UDP 응답 ICMP Port Unreachable 느림
Idle -sI (좀비 경유) 좀비 IPID +2 좀비 IPID +1 출발지 완전 은닉

2-5. OS 핑거프린팅 · 서비스 확인

OS 기본 TTL 기본 윈도우 크기(대표값)
Linux / Unix 계열 64 5840 / 29200 / 64240 등
Windows 128 8192 / 64240 / 65535
Cisco 장비, Solaris 255 4128 등

수신된 TTL이 119면 128에서 9홉 지나온 것 → Windows 추정. 55면 64에서 9홉 → 리눅스 추정.

2-6. Nmap 주요 옵션

옵션 의미
-sn 호스트 탐색만 (포트 스캔 X, 예전 -sP)
-Pn 호스트 탐색 생략 (ICMP 막힌 대상도 스캔)
-p 22,80,443 / -p- 포트 지정 / 전체 1~65535
-sV 서비스 버전 탐지
-O OS 탐지
-A OS + 버전 + 스크립트 + traceroute 종합
-sC / --script NSE(Nmap Scripting Engine) 스크립트 실행 (취약점 점검 가능)
-T0~5 속도
-oN / -oX / -oG 결과 저장 (일반/XML/grep형)
$ nmap -sS -sV -O 192.168.10.5
PORT     STATE    SERVICE  VERSION
22/tcp   open     ssh      OpenSSH 7.4 (protocol 2.0)
80/tcp   open     http     Apache httpd 2.4.6
443/tcp  closed   https
3306/tcp filtered mysql
OS details: Linux 3.10 - 4.11

2-7. 스캔 탐지 — 패킷으로 읽기 ★ (실기)

SYN 스캔 tcpdump

10:15:01.100211 IP 203.0.113.9.51515 > 192.168.10.5.21: Flags [S], seq 3829110021, win 1024, options [mss 1460], length 0
10:15:01.100214 IP 203.0.113.9.51515 > 192.168.10.5.22: Flags [S], seq 3829110021, win 1024, options [mss 1460], length 0
10:15:01.100219 IP 203.0.113.9.51515 > 192.168.10.5.23: Flags [S], seq 3829110021, win 1024, options [mss 1460], length 0
10:15:01.100301 IP 192.168.10.5.21 > 203.0.113.9.51515: Flags [R.], seq 0, ack 3829110022, win 0, length 0
10:15:01.100305 IP 192.168.10.5.22 > 203.0.113.9.51515: Flags [S.], seq 1102938475, ack 3829110022, win 29200, options [mss 1460], length 0
10:15:01.100340 IP 203.0.113.9.51515 > 192.168.10.5.22: Flags [R], seq 3829110022, win 0, length 0
10:15:01.100355 IP 192.168.10.5.23 > 203.0.113.9.51515: Flags [R.], seq 0, ack 3829110022, win 0, length 0

XMAS / NULL / FIN 스캔 tcpdump

10:20:44.501002 IP 203.0.113.9.40021 > 192.168.10.5.80: Flags [FPU], seq 912003, win 1024, urg 0, length 0
10:20:44.501090 IP 203.0.113.9.40021 > 192.168.10.5.81: Flags [FPU], seq 912003, win 1024, urg 0, length 0
10:20:44.501133 IP 192.168.10.5.81 > 203.0.113.9.40021: Flags [R.], seq 0, ack 912004, win 0, length 0
10:20:51.330017 IP 203.0.113.9.40022 > 192.168.10.5.80: Flags [none], win 1024, length 0
10:20:58.200450 IP 203.0.113.9.40023 > 192.168.10.5.80: Flags [F], seq 1500, win 1024, length 0

Wireshark 디스플레이 필터 (스캔 찾기)

목적 필터
SYN만 (SYN 스캔/SYN Flood) tcp.flags.syn == 1 && tcp.flags.ack == 0
SYN+ACK 응답 (열린 포트) tcp.flags.syn == 1 && tcp.flags.ack == 1
RST 응답 tcp.flags.reset == 1
XMAS 스캔 tcp.flags == 0x029
NULL 스캔 tcp.flags == 0x000
FIN 스캔 tcp.flags == 0x001
UDP 스캔 응답(닫힌 포트) icmp.type == 3 && icmp.code == 3
특정 공격자 ip.src == 203.0.113.9

2-8. 취약점 스캐너 · 스캔 도구

도구 용도
Nmap (Zenmap=GUI) 포트·서비스·OS 스캔, NSE 스크립트
hping3 원하는 플래그·크기로 패킷 제작(스캔, 방화벽 테스트)
masscan / zmap 인터넷 규모 초고속 스캔
Nessus 상용 종합 취약점 스캐너 (플러그인 기반)
OpenVAS Nessus에서 갈라진 오픈소스 취약점 스캐너
Nikto 웹 서버 취약점 스캐너 (위험 파일, 구버전, 설정 오류)
SATAN / SAINT 초기 유닉스 네트워크 취약점 점검 도구 (SAINT는 SATAN 후속)
ISS, Retina, Qualys 상용 취약점 점검
firewalk TTL을 이용해 방화벽 통과 포트 파악

2-9. 스캔 대응

⚠️ 시험 함정 (Day 2)

📌 기출 포인트 (Day 2)

✏️ 확인 문제 (Day 2)

Q1. 리눅스 서버를 대상으로 XMAS 스캔을 수행했을 때 닫힌 포트의 응답은?
① 무응답 ② SYN+ACK ③ RST+ACK ④ ICMP Port Unreachable

Q2. 다음 중 TCP 플래그 조합이 바르게 연결된 것은?
① NULL 스캔 – SYN ② XMAS 스캔 – FIN, PSH, URG ③ FIN 스캔 – FIN, ACK ④ ACK 스캔 – SYN, ACK

Q3. 스캐너가 보낸 패킷에 대해 대상이 RST를 보내면 "unfiltered", 무응답이면 "filtered"로 판단하며, 포트의 열림·닫힘보다 방화벽 규칙 파악에 쓰이는 스캔은?
① SYN 스캔 ② ACK 스캔 ③ UDP 스캔 ④ Connect 스캔

Q4. 다음 tcpdump 출력에 대한 해석으로 옳은 것은?
IP 10.0.0.9.4444 > 10.0.0.5.22: Flags [S] → IP 10.0.0.5.22 > 10.0.0.9.4444: Flags [S.] → IP 10.0.0.9.4444 > 10.0.0.5.22: Flags [R]
① 22번 포트가 닫혀 있어 대상이 RST를 보냈다.
② TCP Connect 스캔으로 연결이 완료되었다.
③ 22번 포트가 열려 있고, 스캐너가 연결을 완료하지 않고 끊었다.
④ XMAS 스캔이다.

Q5. 패킷을 보내지 않고 네트워크를 지나가는 트래픽의 TTL·윈도우 크기 등을 관찰하여 운영체제를 추정하는 기법과 도구가 바르게 짝지어진 것은?
① 능동적 핑거프린팅 – nmap -O ② 수동적 핑거프린팅 – p0f ③ 배너 그래빙 – Nikto ④ Firewalking – hping3


Day 3 · 스푸핑 · 스니핑 · 세션 하이재킹

복습: ARP 동작(Request는 브로드캐스트, Reply는 유니캐스트), 스위치의 MAC 주소 테이블, TCP 순서번호/확인응답번호 → Week01_네트워크 기초

3-1. 스니핑(Sniffing)의 원리

스니핑은 네트워크를 지나가는 패킷을 엿듣는(도청) 수동적 공격이다. 기밀성(C)을 노린다.

3-2. 스위치 환경의 스니핑 기법 ★★

공격 원리 대응
스위치 재밍 (MAC Flooding) 위조한 출발지 MAC을 가진 프레임을 대량 전송 → 스위치 MAC 테이블(CAM 테이블)이 가득 참 → 스위치가 목적지를 모르는 프레임을 모든 포트로 플러딩(Fail-open) → 허브처럼 동작. 도구 macof 포트 보안(Port Security): 포트당 학습 MAC 수 제한, 위반 시 shutdown
ARP 스푸핑 위조 ARP Reply로 피해자 ARP 캐시의 게이트웨이 MAC을 공격자 MAC으로 바꿈 → 트래픽이 공격자를 경유(MITM) 정적 ARP, DAI, arpwatch
ARP 리다이렉트 ARP 스푸핑의 한 형태. 공격자가 "내가 게이트웨이다" 라고 LAN 전체에 위조 ARP Reply를 브로드캐스트 → 모든 호스트의 외부행 트래픽 가로챔 동일
ICMP 리다이렉트 위조 ICMP Redirect(type 5) 로 "더 좋은 경로는 공격자"라고 속여 피해자의 라우팅 테이블을 변경 ICMP Redirect 수신 거부
SPAN / 포트 미러링 악용 스위치의 관리 기능(특정 포트 트래픽을 모니터링 포트로 복사)을 공격자가 설정하거나 미러링 포트에 접근 스위치 관리 접근 통제, 물리 보안
DHCP 스푸핑 가짜 DHCP 서버로 게이트웨이·DNS를 공격자로 지정 DHCP Snooping(신뢰 포트에서만 DHCP 응답 허용)
DHCP Starvation 위조 MAC으로 DHCP 주소를 모두 소진 포트 보안, DHCP Snooping 속도 제한
 [MAC Flooding]
 공격자 ── 초당 수만 개 프레임, 출발지 MAC 무작위 ──▶ 스위치
                                              CAM 테이블 (용량 예: 8K 항목)
                                              ┌──────────────────────┐
                                              │ 3a:1f:..  포트5        │
                                              │ 7c:22:..  포트5        │
                                              │ ... 가짜로 가득 참 ... │
                                              └──────────────────────┘
 정상 프레임(목적지 MAC 학습 불가) → "모르는 목적지" → 모든 포트로 플러딩 → 공격자도 수신

3-3. ARP 스푸핑 상세 ★★★

왜 되나?

  1. ARP에는 인증이 없다 — 누가 보낸 Reply인지 확인하지 않는다.
  2. ARP는 상태가 없다(stateless) — 내가 Request를 보낸 적이 없어도 Reply가 오면 캐시를 갱신한다(Gratuitous/Unsolicited ARP 수용).

공격 흐름 (게이트웨이와 피해자 사이 MITM)

sequenceDiagram
    participant V as 피해자 192.168.0.23
    participant A as 공격자 192.168.0.50
    participant G as 게이트웨이 192.168.0.1
    A->>V: ARP Reply "192.168.0.1은 aa-bb-cc-11-22-33"
    A->>G: ARP Reply "192.168.0.23은 aa-bb-cc-11-22-33"
    Note over A: 몇 초마다 반복 전송(캐시 유지)
    V->>A: 외부로 가는 패킷(목적지 MAC=공격자)
    Note over A: 패킷 복사/열람 후 IP 포워딩
    A->>G: 그대로 전달
    G->>A: 응답
    A->>V: 전달(피해자는 눈치 못 챔)

ARP 캐시: 공격 전 / 후 (피해자 PC에서 arp -a)

[공격 전]
C:\> arp -a
Interface: 192.168.0.23 --- 0xb
  Internet Address      Physical Address      Type
  192.168.0.1           00-1a-2b-3c-4d-5e     dynamic
  192.168.0.50          aa-bb-cc-11-22-33     dynamic
  192.168.0.255         ff-ff-ff-ff-ff-ff     static

[공격 후]
C:\> arp -a
Interface: 192.168.0.23 --- 0xb
  Internet Address      Physical Address      Type
  192.168.0.1           aa-bb-cc-11-22-33     dynamic   ← 게이트웨이 MAC이 바뀜!
  192.168.0.50          aa-bb-cc-11-22-33     dynamic   ← 공격자와 같은 MAC
  192.168.0.255         ff-ff-ff-ff-ff-ff     static

탐지

대응

3-4. ICMP 리다이렉트 공격

3-5. IP 스푸핑과 트러스트(Trust) 공격

3-6. DNS 스푸핑 / DNS 캐시 포이즈닝 ★★

DNS 스푸핑 (LAN 내 경쟁 조건, Race)

DNS는 주로 UDP 53을 쓰고, 클라이언트는 먼저 도착한 응답을 믿고 나중 응답은 버린다. 공격자가 같은 LAN에서 (ARP 스푸핑 등으로) DNS 질의를 엿보면 트랜잭션 ID와 포트를 그대로 맞춘 가짜 응답을 진짜 DNS 서버보다 먼저 보낼 수 있다.

sequenceDiagram
    participant V as 피해자
    participant A as 공격자(스니핑 중)
    participant D as 정상 DNS 서버
    V->>D: Query bank.example A? (TXID 0x3f1a)
    Note over A: 질의를 엿보고 TXID와 포트 확인
    A->>V: 가짜 Response 1.2.3.4 (TXID 0x3f1a)
    D->>V: 진짜 Response 203.0.113.80 (TXID 0x3f1a)
    Note over V: 먼저 온 가짜를 채택, 진짜는 폐기
    V->>A: 가짜 사이트(1.2.3.4) 접속 - 파밍

DNS 캐시 포이즈닝

대응 효과
DNSSEC 응답에 전자서명(RRSIG)을 붙여 출처·무결성 검증. 근본 대책 (기밀성은 제공하지 않음)
출발지 포트 랜덤화 TXID 16비트 + 포트 약 16비트 → 추측 난도 대폭 증가
TXID 랜덤화 순차 TXID 예측 차단
재귀 질의 제한 내부 사용자만 재귀 허용(오픈 리졸버 금지)
hosts 파일 중요 사이트를 로컬에 고정(소규모) — hosts 파일이 DNS보다 먼저 참조됨
DoH / DoT 클라이언트-리졸버 구간 암호화로 LAN 도청·위조 방지

3-7. 스니핑 탐지 기법 ★★

방법 원리
호스트 점검 ifconfig(구형)에 PROMISC 플래그, ip link에 PROMISC, 리눅스 dmesg entered promiscuous mode
Ping을 이용 의심 호스트의 IP로, 그러나 존재하지 않는 MAC 주소로 ICMP Echo를 보낸다. 정상 NIC는 MAC이 달라 버리지만, 무차별 모드면 받아서 응답 → 스니퍼
ARP를 이용 위와 같은 원리로, 브로드캐스트가 아닌 가짜 목적지 MAC의 ARP Request를 보내 응답 여부 확인
DNS를 이용 스니퍼는 수집한 IP를 보기 좋게 표시하려고 역방향 DNS 질의(PTR) 를 하는 경우가 많다. 존재하지 않는 가짜 IP로 패킷을 뿌린 뒤 그 IP에 대한 역질의를 하는 호스트를 찾는다
유인(Decoy) 가짜 ID/PW를 평문으로 일부러 흘리고, 그 계정으로 로그인 시도가 오는지 감시
ARP Watch IP-MAC 변화 감시 → ARP 스푸핑을 동반한 스니핑 탐지
지연 시간(Latency) 대량 트래픽을 보내 의심 호스트 응답 시간 증가 측정 (스니핑 중이면 처리 부하)
 [Ping 이용 탐지]
 탐지자 → 목적지 IP = 192.168.0.50 (의심 호스트)
          목적지 MAC = 00:00:00:aa:bb:cc  (아무도 안 쓰는 가짜 MAC)
 정상 NIC        : "내 MAC 아님" → 버림 → 응답 없음
 무차별 모드 NIC : 모든 프레임 수신 → IP가 자기 것 → Echo Reply 응답 → 스니퍼 확정

3-8. 세션 하이재킹 (TCP Session Hijacking) ★★

개념: 이미 인증이 끝난 TCP 세션을 중간에서 빼앗는다. 비밀번호를 몰라도 로그인된 세션을 그대로 쓴다. 핵심은 TCP가 패킷의 정당성을 IP·포트·순서번호(SEQ)·확인응답번호(ACK) 만으로 판단한다는 점이다.

순서번호 흐름 (같은 LAN에서 스니핑하며 수행하는 경우)

 클라이언트 10.0.0.10:51000  ⇄  서버 10.0.0.20:23 (Telnet, 이미 로그인됨)

 ① C → S : SEQ=1000, ACK=5000, 데이터 10바이트("ls -al\r\n" 등)
 ② S → C : SEQ=5000, ACK=1010, 데이터 200바이트
   (서버는 다음에 SEQ=1010을 기대, 클라이언트는 다음에 SEQ=5200을 기대)

 ③ 공격자 → S : (출발지 10.0.0.10:51000 위조) SEQ=1010, ACK=5200, 데이터 "명령" 20바이트
      → 서버는 정상으로 받아들임. 이제 서버가 기대하는 다음 SEQ=1030

 ④ 진짜 C → S : SEQ=1010 ... (서버 입장에선 이미 지난 번호 = 범위 밖)
      → 서버: "내가 기대하는 건 1030" ACK=1030 으로 응답
      → 클라이언트: "난 1010까지만 보냈는데?" 자기 기준 ACK로 응답
      → 서로 상대 ACK가 틀렸다며 ACK를 주고받는 무한 반복 = ACK Storm
sequenceDiagram
    participant C as 클라이언트
    participant A as 공격자
    participant S as 서버
    C->>S: SEQ=1000 ACK=5000 (10B)
    S->>C: SEQ=5000 ACK=1010 (200B)
    A->>S: 위조 SEQ=1010 ACK=5200 (20B 명령)
    Note over S: 다음 기대 SEQ=1030
    C->>S: SEQ=1010 (서버 기준 범위 밖)
    S->>C: ACK=1030
    C->>S: ACK=5200 (자기 기준)
    Note over C,S: ACK Storm 반복

탐지: ACK Storm(비정상적으로 많은 ACK), 패킷 유실·재전송 급증, 갑작스러운 세션 끊김, 같은 세션에서 TTL이 다른 패킷(출발지가 달라짐) 혼재.
대응: 암호화(SSH·TLS — 공격자가 유효한 암호문을 못 만듦), 중요 작업 시 재인증, 세션 타임아웃, 스니핑 방지(스위치 보안), ISN 랜덤화.

웹 세션 하이재킹: 로그인 후 받는 세션 쿠키(예: JSESSIONID)를 XSS·스니핑으로 훔쳐 재사용. 대응: 쿠키 Secure·HttpOnly·SameSite, HTTPS 전 구간, IP/User-Agent 바인딩, 로그인 시 세션 ID 재발급.

3-9. 원격 접속 공격: 트로이목마 · 백도어 · 리버스 쉘

용어 개념
트로이목마 정상 프로그램으로 위장해 설치되고, 뒤에서 악성 기능 수행. 자기 복제 없음(바이러스·웜과 차이)
백도어 정상 인증을 거치지 않고 시스템에 들어올 수 있는 숨겨진 통로. 개발자 디버깅용 백도어(트랩도어)가 남은 경우도 있음
RAT (Remote Access Trojan) 원격 제어 기능을 갖춘 트로이목마(화면·키보드·파일 제어)
바인드 쉘 (Bind Shell) 피해 시스템이 포트를 열고 대기, 공격자가 접속해 들어감 → 인바운드 방화벽에 막히기 쉬움
리버스 쉘 (Reverse Shell) 피해 시스템이 공격자에게 먼저 접속(아웃바운드)해 쉘을 넘겨줌 → 대부분의 방화벽이 내부→외부는 허용하므로 우회됨. 80/443 같은 허용 포트를 흔히 사용
 [바인드 쉘]   공격자 ──(인바운드, 방화벽 차단 ✗)──▶ 피해자:4444 LISTEN
 [리버스 쉘]   피해자 ──(아웃바운드 443, 방화벽 통과 ✓)──▶ 공격자:443 LISTEN

탐지 — 수상한 외부 연결 찾기

C:\> netstat -ano | findstr ESTABLISHED
  TCP    192.168.0.23:49822     198.51.100.66:443      ESTABLISHED     4312
  TCP    192.168.0.23:49830     52.97.12.4:443         ESTABLISHED     6020

C:\> tasklist /FI "PID eq 4312"
Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
svch0st.exe                   4312 Console                    1      6,212 K
$ netstat -antp | grep ESTABLISHED
tcp   0   0 10.0.5.21:43122   203.0.113.250:4444   ESTABLISHED 2231/bash

대응: Egress(아웃바운드) 필터링(필요한 목적지·포트만 허용, 프록시 경유 강제), 최소 권한, 무결성 점검(Tripwire), EDR, 열린 포트·프로세스 정기 점검(netstat, lsof -i), 출처 불명 프로그램 실행 금지.

3-10. 스푸핑 공격 비교 요약

공격 조작 대상 계층 핵심 대응
ARP 스푸핑 ARP 캐시(IP→MAC) 2 정적 ARP, DAI, arpwatch
ICMP 리다이렉트 라우팅 테이블 3 Redirect 무시
IP 스푸핑 출발지 IP 3 트러스트 제거, Ingress 필터링
DNS 스푸핑/포이즈닝 도메인→IP 응답, DNS 캐시 7 DNSSEC, 포트 랜덤화
세션 하이재킹 TCP SEQ/ACK 4 암호화, 재인증
MAC Flooding 스위치 CAM 테이블 2 포트 보안

⚠️ 시험 함정 (Day 3)

📌 기출 포인트 (Day 3)

✏️ 확인 문제 (Day 3)

Q1. 다음 arp -a 결과에 대한 설명으로 가장 적절한 것은?

192.168.0.1     aa-bb-cc-11-22-33   dynamic
192.168.0.50    aa-bb-cc-11-22-33   dynamic

① 정상적인 상태이다. ② 192.168.0.1이 ARP 스푸핑 공격을 수행 중이다. ③ 192.168.0.50 호스트가 게이트웨이로 위장하는 ARP 스푸핑이 의심된다. ④ MAC Flooding 공격이 진행 중이다.

Q2. 스위치에 위조된 출발지 MAC 주소를 가진 프레임을 대량으로 보내 스위치가 허브처럼 동작하게 만드는 공격과 그 대응이 바르게 연결된 것은?
① ARP 리다이렉트 – 정적 ARP ② 스위치 재밍 – 포트 보안 ③ ICMP 리다이렉트 – DAI ④ DHCP 스푸핑 – DNSSEC

Q3. 스니퍼 탐지 기법 중 "의심 호스트의 IP 주소로, 그러나 존재하지 않는 MAC 주소를 목적지로 하여 ICMP Echo Request를 보낸다"는 방법의 원리는?
① 스니퍼는 역방향 DNS 질의를 하기 때문이다.
② 무차별 모드의 NIC는 목적지 MAC이 달라도 프레임을 수신하므로 응답하게 된다.
③ 스니퍼는 ARP 캐시를 비우기 때문이다.
④ 스니퍼는 TTL을 변경하기 때문이다.

Q4. TCP 세션 하이재킹 과정에서 클라이언트와 서버가 서로 상대방의 순서번호가 틀렸다고 판단하여 ACK 패킷을 계속 주고받는 현상은?
① SYN Storm ② ACK Storm ③ Broadcast Storm ④ RST Flood

Q5. DNS 캐시 포이즈닝에 대한 대응으로 가장 거리가 먼 것은?
① DNSSEC 적용 ② DNS 질의의 출발지 포트 랜덤화 ③ 외부 사용자의 재귀 질의 허용 ④ 트랜잭션 ID 랜덤화

Q6. 내부 감염 PC가 외부 공격자 서버의 443 포트로 먼저 접속하여 명령 실행 환경을 넘겨주는 방식에 대한 설명으로 옳은 것은?
① 바인드 쉘이며, 인바운드 차단으로 쉽게 막을 수 있다.
② 리버스 쉘이며, 아웃바운드(Egress) 통제가 효과적인 대응이다.
③ IP 스푸핑이며, uRPF로 막을 수 있다.
④ 세션 하이재킹이며, ACK Storm이 발생한다.


Day 4 · 보안 장비

4-1. 방화벽(Firewall)의 개념과 기능

방화벽은 신뢰하는 내부망과 신뢰하지 않는 외부망 경계에서 미리 정한 보안 정책(규칙) 에 따라 트래픽을 허용·차단하는 시스템이다.

기능 설명
접근 통제 IP·포트·프로토콜·사용자·애플리케이션 기준 허용/차단 (핵심 기능)
식별 및 인증 사용자 인증(프록시형에서 특히)
감사 및 로그 허용·차단 기록 남김 → 사후 추적
주소 변환 (NAT) 내부 사설 IP를 숨김
프록시 내부 대신 외부와 통신

방화벽의 한계 (자주 출제)

4-2. 방화벽 종류 ★★

유형 동작 계층 판단 기준 장점 단점
패킷 필터링 (Screening) 3~4 각 패킷의 IP 주소, 포트, 프로토콜, 플래그 (헤더만) 빠름, 투명성, 저렴 데이터 내용 검사 X, IP 위조에 취약, 상태 모름, 로그 빈약
상태 기반 검사 (Stateful Inspection) 3~4 (+일부 7) 헤더 + 세션 상태 테이블 세션 없는 비정상 패킷 차단, 응답 트래픽 자동 허용, 성능 좋음 상태 테이블 자체가 DoS 대상
애플리케이션 게이트웨이 (Application Proxy) 7 서비스별 프록시가 내용까지 검사 가장 강력한 검사, 사용자 인증·상세 로그 느림, 서비스마다 프록시 필요, 유연성 낮음
서킷 게이트웨이 (Circuit-level) 5 (세션) 세션 수준 중계, 대표 SOCKS 하나의 일반 프록시로 여러 서비스 중계 클라이언트에 SOCKS 지원 필요(수정), 내용 검사 X
하이브리드 혼합 패킷 필터 + 프록시 등 조합 유연 관리 복잡
NGFW (차세대 방화벽) 3~7 애플리케이션 식별, 사용자 식별, IPS·SSL 복호화 통합 포트가 아닌 앱 단위 통제 고가, 성능 부하

상태 기반 방화벽의 세션 테이블 예

 Proto  Source             Destination        State
 TCP    10.0.0.23:51022    93.184.216.34:443  ESTABLISHED
 TCP    10.0.0.31:40110    203.0.113.5:80     SYN_SENT
 UDP    10.0.0.23:53001    8.8.8.8:53         (응답 대기, 30초)
 → 외부에서 93.184.216.34:443 → 10.0.0.23:51022 로 오는 응답은 테이블에 있으므로 허용
 → 테이블에 없는 외부발 ACK/FIN 패킷은 차단 (ACK·FIN 스캔 무력화)

4-3. 방화벽 구성 형태 ★★★

① 스크리닝 라우터 (Screening Router)

 인터넷 ──── [스크리닝 라우터: 패킷 필터링] ──── 내부망

② 배스천 호스트 (Bastion Host)

③ 이중 홈 게이트웨이 (Dual-Homed Gateway)

 인터넷 ──── [NIC1  배스천 호스트  NIC2] ──── 내부망
                  (IP 포워딩 OFF, 프록시로만 중계)

④ 스크린드 호스트 게이트웨이 (Screened Host Gateway)

 인터넷 ── [스크리닝 라우터] ──┬── 내부망
                              │
                        [배스천 호스트]
   라우터: "외부→내부 트래픽은 반드시 배스천 호스트로만" (패킷 필터 + 프록시 2단)

⑤ 스크린드 서브넷 게이트웨이 (Screened Subnet Gateway) — DMZ

 인터넷
   │
 [외부 스크리닝 라우터]
   │
 ──┴─────── DMZ (경계 네트워크) ──────────────
     │            │             │
 [배스천 호스트] [웹 서버]   [메일·DNS 서버]
 ──┬────────────────────────────────────────
   │
 [내부 스크리닝 라우터]
   │
 내부망 (DB, 업무 PC)
구성 구성요소 장점 단점
스크리닝 라우터 라우터 저렴, 빠름 내용 검사·로그 약함
이중 홈 게이트웨이 배스천(NIC 2) 직접 연결 차단, 응용 수준 통제 단일 장애점
스크린드 호스트 라우터 + 배스천 2단 방어 라우터 침해 시 우회
스크린드 서브넷 라우터 2 + DMZ(배스천) 가장 안전 비용·복잡도 최대

4-4. 방화벽 정책과 룰 처리 순서 ★

예제 룰셋

No 출발지 목적지 서비스 동작
1 any 10.0.1.10 (웹) TCP 80, 443 허용
2 10.0.0.0/8 10.0.1.0/24 TCP 22 허용
3 203.0.113.0/24 any any 거부
4 any 10.0.1.0/24 TCP 22 거부
5 any any any 거부 (묵시적)
패킷 결과 이유
203.0.113.7 → 10.0.1.10:443 허용 1번에 먼저 일치 (3번 차단 규칙은 보지 않음!)
10.2.3.4 → 10.0.1.20:22 허용 2번
198.51.100.9 → 10.0.1.20:22 거부 4번
198.51.100.9 → 10.0.1.20:3389 거부 5번 (어디에도 없음)

3번 "악성 대역 차단" 의도가 있었다면 1번보다 위에 둬야 한다. 아래 규칙이 위 규칙에 가려져 영원히 적용되지 않는 현상을 규칙 가림(Shadowing) 이라 한다.

4-5. IDS (Intrusion Detection System) ★★★

개념: 네트워크·시스템을 감시하여 침입(의심) 행위를 탐지하고 알리는 시스템. 기본은 탐지·경고이며 차단은 하지 않는다(일부는 TCP RST 전송·방화벽 연동 같은 제한적 대응).

구성 요소

처리 단계 (순서 문제 단골)

 ① 정보 수집 (Data Collection)        : 패킷·로그·시스템 호출 수집
        ↓
 ② 정보 가공 및 축약 (Data Reduction)  : 필터링, 불필요 정보 제거, 정규화
        ↓
 ③ 분석 및 침입 탐지 (Analysis)        : 오용/이상 탐지 기법 적용
        ↓
 ④ 보고 및 대응 (Reporting/Response)  : 경고, 로그, (방화벽 연동, RST 전송)

분류 1 — 데이터 출처(설치 위치)

구분 HIDS (호스트 기반) NIDS (네트워크 기반)
데이터 OS 로그, 시스템 호출, 파일 무결성, 프로세스 네트워크 패킷
장점 암호화 트래픽도 호스트에서 복호화 후 확인, 공격 성공 여부 확인, 내부자 행위 탐지 네트워크 전체 감시, 호스트에 부담 없음, 공격자에게 잘 안 보임
단점 호스트 자원 사용, OS별 설치 필요, 호스트가 장악되면 무력화 암호화된 트래픽 내용 못 봄, 대용량 트래픽에서 패킷 유실, 호스트 내부 행위 모름
예 Tripwire(무결성), OSSEC, Wazuh Snort, Suricata, Zeek(Bro)

분류 2 — 탐지 방식 ★★★

구분 오용 탐지 (Misuse / Signature / Knowledge-based) 이상 탐지 (Anomaly / Behavior-based)
원리 알려진 공격 패턴(시그니처) 과 일치하면 탐지 평소 정상 행위 프로파일에서 크게 벗어나면 탐지
장점 오탐(False Positive) 적음, 공격명 명확, 빠름 알려지지 않은 공격(제로데이) 탐지 가능
단점 신종·변형 공격 탐지 못 함(미탐), 시그니처 지속 업데이트 필요 오탐 많음, 정상 기준(학습 기간) 설정 어려움
대표 기법 전문가 시스템, 패턴 매칭, 상태 전이 분석, 페트리넷 통계적 분석, 신경망·머신러닝, 특징 추출, 예측 가능한 패턴 생성

오탐 / 미탐 (2×2) ★

실제 공격 O 실제 공격 X (정상)
경보 O True Positive (정탐) False Positive (오탐) — 정상을 공격으로
경보 X False Negative (미탐) — 공격을 놓침 True Negative

4-6. IPS와 배치 위치 ★★

 [IDS — Out-of-band(수동) 배치]

 인터넷 ── 방화벽 ── 스위치 ──────── 내부 서버
                       │ (SPAN/미러 포트 또는 TAP으로 복사본 전달)
                       ▼
                     [IDS] → 경보만 (원본 트래픽 흐름에 관여 X)

 [IPS — In-line 배치]

 인터넷 ── 방화벽 ── [IPS] ── 스위치 ── 내부 서버
                      ↑ 모든 트래픽이 통과 → 탐지 즉시 해당 패킷/세션 Drop
구분 IDS IPS
배치 Out-of-band (SPAN·TAP으로 복사본 수신) In-line (트래픽 경로 한가운데)
동작 탐지·경보 (사후) 탐지 + 실시간 차단 (사전)
장애 영향 IDS가 죽어도 서비스 영향 없음 IPS 장애 시 네트워크 단절 위험 → Fail-Open(장애 시 그냥 통과, 바이패스) 또는 Fail-Closed(장애 시 차단) 선택
오탐 영향 경보가 늘 뿐 정상 트래픽이 차단되어 서비스 장애
성능 지연 없음 지연(latency) 발생 가능

4-7. 허니팟 (Honeypot)

4-8. ESM · SIEM · SOAR ★

구분 ESM SIEM SOAR
풀네임 Enterprise Security Management Security Information & Event Management Security Orchestration, Automation & Response
핵심 방화벽·IDS·IPS·백신 등 이기종 보안 장비의 이벤트를 한 곳에서 통합 관리 ESM + 모든 IT 로그(서버·네트워크·앱) 빅데이터 수집 + 상관 분석 + 장기 보관 SIEM 경보를 받아 플레이북(Playbook) 대로 대응을 자동화, 여러 보안 도구 연동(오케스트레이션)
관점 보안 장비 중심, 실시간 관제 로그 전반, 위협 탐지·컴플라이언스 대응 속도·인력 효율
구성 에이전트 → 매니저 → 콘솔 수집기 → 정규화 → 상관 분석 엔진 → 저장소/대시보드 플레이북, 케이스 관리, 위협 인텔리전스 연동

4-9. UTM · WAF

4-10. NAC (Network Access Control) ★★

개념: 네트워크에 접속하려는 단말(엔드포인트) 이 인가된 사용자·기기인지, 보안 정책(백신 설치·최신 패치·필수 SW·OS 설정) 을 지키는지 접속 전에 검사하고, 미준수 단말은 격리 → 치료 후 허용한다.

동작 단계

sequenceDiagram
    participant E as 단말(사용자 PC)
    participant N as NAC 정책 서버
    participant SW as 스위치/AP
    E->>SW: 네트워크 접속 시도
    SW->>N: 인증 요청(802.1X, MAC 등)
    N->>E: 사용자·기기 인증
    N->>E: 무결성 검사(백신, 패치, 필수SW)
    alt 정책 준수
        N->>SW: 정상 VLAN 허용
    else 미준수
        N->>SW: 격리 VLAN 할당
        Note over E: 패치·백신 업데이트(치료) 후 재검사
    end

4-11. DLP (Data Loss Prevention)

4-12. IP 역추적 (IP Traceback)

공격자가 IP를 위조하거나 여러 시스템을 경유(Stepping Stone) 하면 실제 근원지를 찾기 어렵다. 역추적은 크게 둘로 나뉜다.

구분 TCP 연결 역추적 (Connection Traceback) IP 패킷 역추적 (Packet Traceback)
상황 공격자가 여러 시스템을 차례로 경유(우회 공격) 하여 TCP 연결로 공격 IP가 위조된 패킷(DoS/DDoS)의 실제 출발지 찾기
방법 호스트 기반(각 경유 시스템 로그 추적), 네트워크 기반 — 연결의 내용·시간 특성(Thumbprint, 타이밍) 비교로 같은 연결 연결고리 찾기 PPM(확률적 패킷 마킹: 라우터가 확률적으로 경로 정보를 패킷에 기록), iTrace(ICMP Traceback: 라우터가 가끔 경로 정보를 담은 ICMP 메시지 생성), 해시 기반(SPIE: 라우터가 지나간 패킷 해시 저장), 링크 테스트(입력 디버깅), 로깅

4-13. 장비 한눈 비교

장비 한 줄 정의 키워드
방화벽 정책 기반 접근 통제 Default Deny, 상태 테이블, DMZ
IDS 탐지·경보 Out-of-band, 오용/이상, 오탐/미탐
IPS 탐지 + 차단 In-line, Fail-Open
WAF 웹 공격 차단 7계층, SQLi, XSS
UTM 여러 보안 기능 통합 장비 중소기업, 단일 장애점
ESM 보안 장비 이벤트 통합 관리 통합 관제
SIEM 전체 로그 수집 + 상관 분석 빅데이터, 컴플라이언스
SOAR 대응 자동화 플레이북, 오케스트레이션
NAC 단말 인증·무결성 검사 후 접속 802.1X, 격리·치료
DLP 정보 유출 방지 Data in Motion/Rest/Use
허니팟 유인 시스템 오탐 거의 없음, 격리

⚠️ 시험 함정 (Day 4)

📌 기출 포인트 (Day 4)

✏️ 확인 문제 (Day 4)

Q1. 두 개의 스크리닝 라우터 사이에 DMZ라는 완충 네트워크를 두고, 그 안에 배스천 호스트와 공개 서버를 배치하는 방화벽 구성은?
① 스크리닝 라우터 ② 이중 홈 게이트웨이 ③ 스크린드 호스트 게이트웨이 ④ 스크린드 서브넷 게이트웨이

Q2. 다음 방화벽 규칙에서 출발지 198.51.100.5, 목적지 10.0.1.10:80 패킷의 처리 결과는?
1) deny 198.51.100.0/24 → any any / 2) allow any → 10.0.1.10 tcp/80 / 3) deny any → any any
① 2번 규칙에 따라 허용 ② 1번 규칙에 따라 거부 ③ 3번 규칙에 따라 거부 ④ 가장 구체적인 2번 규칙이 우선하여 허용

Q3. 이상 탐지(Anomaly Detection) 방식 IDS에 대한 설명으로 옳은 것은?
① 알려진 공격 시그니처와 비교하므로 오탐이 적다.
② 정상 행위 프로파일과의 차이로 판단하므로 알려지지 않은 공격도 탐지할 수 있다.
③ 시그니처 업데이트가 없으면 동작하지 않는다.
④ 대표 기법으로 패턴 매칭과 상태 전이 분석이 있다.

Q4. IDS가 실제 공격을 정상 트래픽으로 판단해 경보를 발생시키지 않은 경우를 뜻하는 용어는?
① True Positive ② False Positive ③ False Negative ④ True Negative

Q5. 다음 설명에 해당하는 것은?
"단말이 네트워크에 접속하기 전에 사용자 인증과 함께 백신 설치 여부, OS 패치 상태 등을 검사하고, 정책을 준수하지 않으면 격리 네트워크로 보내 치료 후 접속을 허용한다."
① DLP ② NAC ③ ESM ④ UTM

Q6. IPS를 인라인으로 배치할 때 장비 장애로 서비스가 중단되는 것을 막기 위해, 장애 시 트래픽을 검사 없이 통과시키는 설정은?
① Fail-Closed ② Fail-Open ③ SPAN ④ Shadowing


Day 5 · 보안 프로토콜 · VPN · Snort

5-1. SSL/TLS 개요

SSL/TLS는 전송 계층(TCP)과 응용 계층 사이에서 동작하며, 응용 프로토콜(HTTP, SMTP, IMAP, FTP 등)에 기밀성·무결성·서버(및 선택적 클라이언트) 인증을 제공한다. HTTPS = HTTP over TLS (TCP 443).

버전 연도 상태
SSL 2.0 / 3.0 1995 / 1996 사용 금지 (DROWN, POODLE)
TLS 1.0 / 1.1 1999 / 2006 폐기(2021, RFC 8996) — BEAST 등
TLS 1.2 2008 현재 최소 권장
TLS 1.3 2018 (RFC 8446) 권장
보안 서비스 제공 수단
기밀성 대칭키 암호(AES, ChaCha20) — 세션키는 핸드셰이크에서 합의
무결성 MAC(HMAC) 또는 AEAD(GCM)
인증 X.509 인증서 + 전자서명 (서버 인증 필수, 클라이언트 인증 선택)
키 교환 RSA(1.2까지), (EC)DHE(전방 비밀성)

5-2. TLS 프로토콜 구조 ★★

 ┌───────────────┬──────────────────┬──────────┬──────────────┐
 │ Handshake(22) │ ChangeCipherSpec │ Alert(21)│ Application  │ ← 상위 프로토콜
 │               │      (20)        │          │  Data (23)   │   (괄호 = Content Type 값)
 ├───────────────┴──────────────────┴──────────┴──────────────┤
 │                   Record Protocol                          │ ← 하위: 실제 전송 담당
 ├────────────────────────────────────────────────────────────┤
 │                        TCP                                 │
 └────────────────────────────────────────────────────────────┘
하위 프로토콜 역할
Handshake 버전·암호 스위트 협상, 서버 인증서 인증, 키 교환, 세션 수립
ChangeCipherSpec "지금부터 협상한 암호 방식으로 바꾼다"는 신호 (1바이트 메시지)
Alert 오류·경고 전달. 레벨 warning(1)/fatal(2, 즉시 연결 종료). 예: close_notify, handshake_failure, bad_certificate, bad_record_mac
Record 상위 데이터를 단편화 → (압축) → MAC 추가 → 암호화 → 레코드 헤더 추가 후 전송
Heartbeat (확장) 연결 유지 확인 — Heartbleed 취약점의 무대

Record 프로토콜 처리 순서

 응용 데이터 → ① 단편화(최대 2^14 = 16KB) → ② 압축(선택, 현재는 미사용)
            → ③ MAC 계산·추가 → ④ 암호화 → ⑤ 레코드 헤더(타입·버전·길이) 추가 → TCP

5-3. TLS 1.2 핸드셰이크 ★★★

sequenceDiagram
    participant C as 클라이언트
    participant S as 서버
    C->>S: ClientHello (버전, Client Random, 지원 암호스위트, 세션ID)
    S->>C: ServerHello (선택한 버전·암호스위트, Server Random)
    S->>C: Certificate (서버 인증서)
    S->>C: ServerKeyExchange (DHE/ECDHE 파라미터, 서명)
    S->>C: CertificateRequest (선택 - 클라이언트 인증 시)
    S->>C: ServerHelloDone
    C->>S: Certificate (요청받은 경우)
    C->>S: ClientKeyExchange (Pre-Master Secret 또는 DH 공개값)
    C->>S: CertificateVerify (클라이언트 인증 시)
    C->>S: ChangeCipherSpec
    C->>S: Finished (암호화됨, 핸드셰이크 전체 해시)
    S->>C: ChangeCipherSpec
    S->>C: Finished (암호화됨)
    Note over C,S: 이후 Application Data 암호화 통신 - 2-RTT

암호 스위트 읽기

 TLS _ ECDHE _ RSA _ WITH _ AES_128_GCM _ SHA256
       키교환   인증          대칭 암호(모드)   해시(PRF/MAC)

5-4. TLS 1.3의 변경점 ★

항목 TLS 1.2 TLS 1.3
핸드셰이크 왕복 2-RTT 1-RTT, 재연결 시 0-RTT(단, 0-RTT 데이터는 재전송 공격 위험)
키 교환 RSA, DH, ECDH, DHE, ECDHE (EC)DHE만 — 정적 RSA 키 교환 제거 → PFS 필수
대칭 암호 CBC, RC4, AEAD 등 AEAD만(AES-GCM, AES-CCM, ChaCha20-Poly1305) — CBC·RC4 제거
해시 MD5, SHA-1 포함 SHA-256/384 (MD5·SHA-1 제거)
압축 지원 제거 (CRIME 대응)
재협상 지원 제거
인증서 평문 전송 ServerHello 이후 암호화 전송
ChangeCipherSpec 필수 프로토콜상 제거(중간 장비 호환용으로만 남음)
암호 스위트 수백 개, 키교환+인증+암호+해시 5개, 대칭 암호+해시만 표기 (TLS_AES_128_GCM_SHA256)
sequenceDiagram
    participant C as 클라이언트
    participant S as 서버
    C->>S: ClientHello + key_share (DH 공개값 미리 전송)
    S->>C: ServerHello + key_share
    S->>C: (암호화) EncryptedExtensions, Certificate, CertificateVerify, Finished
    C->>S: (암호화) Finished
    Note over C,S: 1-RTT 만에 암호 통신 시작

5-5. SSL/TLS 공격 ★★

공격 연도 대상 원리 대응
Heartbleed 2014 OpenSSL 1.0.1~1.0.1f 구현 버그 Heartbeat 요청에서 길이 필드를 실제보다 크게 보내면 서버가 길이 검증 없이 메모리를 최대 64KB 읽어 응답 → 개인키·세션쿠키·비밀번호 노출 OpenSSL 업데이트(1.0.1g 이상), 인증서 재발급(개인키 교체), 비밀번호 변경
POODLE 2014 SSL 3.0 CBC 패딩 다운그레이드 유도 후 CBC 패딩 검증 약점(Padding Oracle) 으로 쿠키 바이트 단위 복호화 SSL 3.0 비활성화, TLS_FALLBACK_SCSV
BEAST 2011 TLS 1.0 CBC 예측 가능한 IV(이전 레코드 마지막 블록 사용) → 선택 평문 공격으로 쿠키 복호화 TLS 1.1 이상, AEAD
CRIME / BREACH 2012 / 2013 TLS 압축 / HTTP 압축 압축 후 길이 변화로 비밀값 추측 TLS 압축 비활성화
FREAK / Logjam 2015 수출용(Export) 약한 RSA/DH 512비트 약한 키로 다운그레이드 Export 스위트 제거, 2048비트 이상 DH
DROWN 2016 SSLv2 지원 서버 SSLv2를 이용해 같은 키를 쓰는 TLS 세션 복호화 SSLv2 완전 비활성화
SSL Stripping 2009 사용자의 첫 HTTP 접속 MITM이 서버와는 HTTPS, 사용자와는 HTTP로 다운그레이드해 평문 탈취 HSTS, HTTPS 전용 접속
가짜 인증서 MITM - 사용자의 경고 무시 공격자 인증서로 중간에서 복호화 인증서 경고 무시 금지, 인증서 고정(Pinning)

SSL Stripping과 HSTS

 사용자 ──HTTP──▶ [공격자(MITM)] ──HTTPS──▶ 은행 서버
   ▲  "http://bank.example" (평문)      서버와는 정상 암호 통신
   └─ 공격자는 응답 안의 https:// 링크를 http:// 로 바꿔 계속 평문 유지 → ID/PW 탈취

점검 실습

$ openssl s_client -connect www.example.com:443 -tls1
... handshake failure        ← TLS 1.0 거부됨(정상)
$ nmap --script ssl-enum-ciphers -p 443 www.example.com   ← 지원 버전·스위트 목록

5-6. IPSec ★★★

IPSec은 3계층(IP) 에서 동작하는 보안 프로토콜 모음이다. IP 위의 모든 트래픽(TCP, UDP, ICMP…) 을 애플리케이션 수정 없이 보호한다. IPv6에서는 원래 필수 구현, IPv4에서는 선택.

구성 요소

구성 설명
AH (Authentication Header, IP 프로토콜 51) 무결성 + 데이터 출처 인증 + 재전송 방지. 암호화(기밀성) 없음. IP 헤더의 변하지 않는 필드까지 인증
ESP (Encapsulating Security Payload, IP 프로토콜 50) 기밀성(암호화) + 무결성·인증(선택) + 재전송 방지. 바깥 IP 헤더는 인증하지 않음
IKE (Internet Key Exchange, UDP 500) SA를 자동 협상하고 키를 교환 (ISAKMP 틀 + Diffie-Hellman). NAT 환경에서는 UDP 4500
SA (Security Association) 양 끝이 합의한 보안 파라미터 묶음(알고리즘, 키, 수명). 단방향 → 양방향 통신엔 최소 2개. SPI + 목적지 IP + 보안 프로토콜(AH/ESP) 로 식별
SAD (SA Database) 현재 유효한 SA 목록
SPD (Security Policy Database) 어떤 트래픽을 보호(PROTECT) / 우회(BYPASS) / 폐기(DISCARD) 할지 정한 정책

IKE 동작 (IKEv1)

5-7. 전송 모드 vs 터널 모드 — 패킷 구조 ★★★

 원래 패킷:            [ IP 헤더 | TCP 헤더 | 데이터 ]

 ── 전송 모드 (Transport) : 원래 IP 헤더 유지, 페이로드만 보호 ──
 AH  전송: [ IP 헤더 | AH | TCP | 데이터 ]
           |<──────── 인증 범위(IP 헤더의 가변 필드 제외 전체) ────────>|

 ESP 전송: [ IP 헤더 | ESP 헤더 | TCP | 데이터 | ESP 트레일러 | ESP 인증 ]
                              |<──── 암호화 범위 ────────>|
                     |<────────── 인증 범위 ─────────────>|

 ── 터널 모드 (Tunnel) : 원래 IP 패킷 전체를 감싸고 새 IP 헤더 추가 ──
 AH  터널: [ 새 IP 헤더 | AH | 원래 IP 헤더 | TCP | 데이터 ]
           |<──────────────── 인증 범위(전체) ────────────────>|

 ESP 터널: [ 새 IP 헤더 | ESP 헤더 | 원래 IP 헤더 | TCP | 데이터 | ESP 트레일러 | ESP 인증 ]
                                  |<──────────── 암호화 범위 ──────────>|
                       |<───────────────── 인증 범위 ──────────────────>|
구분 전송 모드 터널 모드
보호 범위 IP 페이로드(상위 계층 데이터) 원래 IP 패킷 전체
IP 헤더 원래 헤더 그대로 새 IP 헤더 추가(게이트웨이 주소)
용도 호스트 ↔ 호스트 (End-to-End) 게이트웨이 ↔ 게이트웨이 (사이트 간 VPN), 호스트 ↔ 게이트웨이
오버헤드 작음 큼 (IP 헤더 추가)

IPSec과 NAT 문제 / NAT-T ★

 NAT-T: [ IP | UDP 4500 | ESP 헤더 | (암호화된 데이터) | ESP 트레일러 | ESP 인증 ]
비교 AH ESP
프로토콜 번호 51 50
기밀성(암호화) X O
무결성·출처 인증 O O (선택)
재전송 방지 O O
바깥 IP 헤더 인증 O X
NAT 통과 불가 NAT-T로 가능

5-8. VPN ★★

VPN(Virtual Private Network): 인터넷 같은 공중망 위에 터널링 + 암호화 + 인증 + 접근 제어로 전용선처럼 쓰는 가상 사설망.

 [사이트 간 VPN (Site-to-Site)]
 본사 LAN ── [VPN 게이트웨이] ═══ IPSec 터널(인터넷) ═══ [VPN 게이트웨이] ── 지사 LAN

 [원격 접속 VPN (Remote Access / Client-to-Site)]
 재택 PC(VPN 클라이언트/브라우저) ═══ SSL VPN 또는 IPSec 터널 ═══ [VPN 게이트웨이] ── 사내망
계층 프로토콜 특징
2계층 PPTP MS 개발, PPP 기반, 제어 TCP 1723 + 데이터 GRE(47), MPPE 암호화 — 취약해 사용 비권장
L2F Cisco 개발, 암호화 없음
L2TP PPTP + L2F 결합(IETF), UDP 1701, 자체 암호화 없음 → 보통 L2TP over IPSec
3계층 IPSec 사이트 간 VPN 표준, AH/ESP/IKE
2.5계층 MPLS VPN 통신사 망의 레이블 기반 VPN(암호화보다 망 분리)
4~7계층 SSL/TLS VPN 웹 브라우저만으로 접속(Clientless), 원격 근무에 편리, 애플리케이션 단위 접근 제어, NAT·방화벽 통과 쉬움(443)
비교 IPSec VPN SSL VPN
계층 3 4~7
클라이언트 전용 클라이언트 필요 브라우저(또는 경량 클라이언트)
주 용도 사이트 간(고정 구간) 원격 접속(이동 사용자)
접근 범위 네트워크 전체 애플리케이션 단위 제어 쉬움
NAT 통과 NAT-T 필요 쉬움

5-9. Snort 룰 ★★★ (실기)

Snort: 오픈소스 NIDS/NIPS. 모드: ① 스니퍼 모드(화면 출력), ② 패킷 로거 모드(파일 저장), ③ NIDS 모드(룰로 탐지), ④ 인라인 모드(IPS, drop 가능).

룰 구조

 alert  tcp  $EXTERNAL_NET  any  ->  $HOME_NET  80  ( msg:"..."; content:"..."; sid:1000001; rev:1; )
 └액션┘ └프로토콜┘ └출발지 IP┘ └포트┘ └방향┘ └목적지 IP┘ └포트┘ └──────────── 룰 옵션 ────────────┘
 |<──────────────────────── 룰 헤더 ────────────────────────>|
헤더 요소 값
액션 alert(경고+로그), log(로그만), pass(무시), drop(차단+로그, 인라인), reject(차단+RST/ICMP 응답), sdrop(로그 없이 차단)
프로토콜 tcp, udp, icmp, ip
IP any, 192.168.1.0/24, !10.0.0.1(부정), [10.0.0.1,10.0.0.2](목록), $HOME_NET 변수
포트 any, 80, 1:1024(범위), :1023(이하), 1024:(이상), !80
방향 ->(출발지→목적지), <>(양방향). <-는 없다

주요 옵션

옵션 의미
msg 경보 메시지
content 페이로드에서 찾을 문자열. 16진수는 |90 90 90|
nocase 대소문자 무시
offset 페이로드 처음부터 몇 바이트 떨어진 곳부터 검색 시작
depth (offset 위치부터) 몇 바이트까지만 검색
distance 직전 content 일치 끝에서 몇 바이트 떨어진 곳부터
within (distance 기준점부터) 몇 바이트 안에서
flags TCP 플래그: F S R P A U(+ C CWR, E ECE), 0=없음. 수식어 +(이 플래그 포함 + 다른 것 있어도 됨), *(이 중 하나라도), !(이 플래그가 아니면)
flow 세션 방향/상태: to_server, to_client, established, stateless
dsize 페이로드 크기 (dsize:>500)
itype / icode ICMP 타입/코드
sameip 출발지 IP = 목적지 IP (Land 탐지)
threshold type limit|threshold|both, track by_src|by_dst, count N, seconds M (최신 버전은 detection_filter/event_filter 권장)
pcre 정규표현식
sid / rev 룰 고유 ID / 개정 번호. 사용자 정의 룰은 sid 1,000,000 이상 (100 미만 예약, 100~999,999는 공식 배포 룰)
classtype / priority / reference 분류, 우선순위, 참고 정보

threshold의 type

offset / depth / distance / within 그림

 페이로드:  G  E  T     /  a  d  m  i  n  /  l  o  g  i  n  .  p  h  p
 바이트:    0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

 content:"GET"; offset:0; depth:3;     → 0~2 바이트 안에서만 "GET" 검색 → 일치
 content:"admin"; offset:4; depth:10;  → 4~13 바이트 범위에서 "admin" 검색 → 5~9에서 일치
 content:"login"; distance:1; within:6; → 직전 일치 끝(9) 다음부터 1바이트 건너 10부터, 6바이트(10~15) 안 → 11~15 일치

룰 예제 (필드별 해설)

① 웹 명령 실행 시도 탐지

alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"WEB-ATTACK cmd.exe 접근 시도"; flow:to_server,established; content:"cmd.exe"; nocase; classtype:web-application-attack; sid:1000001; rev:1;)

② SYN Flooding 탐지 (threshold)

alert tcp any any -> $HOME_NET 80 (msg:"DoS SYN Flooding 의심"; flags:S; threshold:type both, track by_dst, count 200, seconds 1; sid:1000002; rev:1;)

③ XMAS / NULL 스캔 탐지

alert tcp any any -> $HOME_NET any (msg:"SCAN XMAS"; flags:FPU; sid:1000003; rev:1;)
alert tcp any any -> $HOME_NET any (msg:"SCAN NULL"; flags:0; sid:1000004; rev:1;)
alert tcp any any -> $HOME_NET any (msg:"SCAN SYN-FIN 비정상 조합"; flags:SF; sid:1000005; rev:1;)

④ Land 공격 탐지

alert ip any any -> $HOME_NET any (msg:"DoS Land Attack"; sameip; sid:1000006; rev:1;)

⑤ FTP root 로그인 시도 (offset/depth)

alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:"FTP root 로그인 시도"; flow:to_server,established; content:"USER root"; nocase; offset:0; depth:9; sid:1000007; rev:1;)

⑥ SSH 무차별 대입 탐지 (by_src)

alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"SSH Brute Force 의심"; flow:to_server; flags:S; threshold:type threshold, track by_src, count 5, seconds 60; sid:1000008; rev:1;)

⑦ 큰 ICMP Echo (Ping of Death 류)

alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP Large Echo Request"; itype:8; dsize:>800; sid:1000009; rev:1;)

⑧ HTTP GET Flooding

alert tcp any any -> $HOME_NET 80 (msg:"HTTP GET Flooding"; flow:to_server,established; content:"GET "; offset:0; depth:4; threshold:type both, track by_src, count 100, seconds 1; sid:1000010; rev:1;)

⑨ 차단(인라인 IPS) — 디렉터리 탐색

drop tcp any any -> $HOME_NET 80 (msg:"WEB 디렉터리 탐색 차단"; flow:to_server,established; content:"../"; content:"/etc/passwd"; distance:0; sid:1000011; rev:1;)

Snort 경보 로그 읽기 (alert 파일, fast 형식)

12/22-14:02:11.000131  [**] [1:1000002:1] DoS SYN Flooding 의심 [**] [Priority: 0] {TCP} 45.33.12.7:38012 -> 192.168.10.5:80

5-10. iptables ★★★ (실기)

구조: 리눅스 커널의 Netfilter를 제어하는 명령. 테이블 → 체인 → 규칙 구조.

테이블 용도 체인
filter (기본) 허용/차단 INPUT(나에게 들어옴), OUTPUT(내가 내보냄), FORWARD(나를 거쳐 지나감)
nat 주소 변환 PREROUTING(DNAT, 포트포워딩), POSTROUTING(SNAT, MASQUERADE), OUTPUT
mangle 패킷 헤더 변경(TTL, TOS, 마킹) 전체
raw 연결 추적 제외(NOTRACK) PREROUTING, OUTPUT
 들어온 패킷 → [PREROUTING] → 라우팅 판단 ─┬─ 나에게 → [INPUT] → 로컬 프로세스 → [OUTPUT] ─┐
                                         └─ 남에게 → [FORWARD] ──────────────────────────┴→ [POSTROUTING] → 나감
옵션 의미
-A / -I / -D 체인 끝에 추가 / 앞(지정 위치)에 삽입 / 삭제
-L / -F / -P 목록 / 규칙 전체 삭제(flush) / 기본 정책 설정
-N 사용자 정의 체인 생성
-p -s -d --sport --dport 프로토콜, 출발지, 목적지, 포트
-i / -o 입력 / 출력 인터페이스
-j 타깃: ACCEPT, DROP(조용히 버림, 응답 없음), REJECT(거부 응답 — ICMP Port Unreachable 또는 TCP RST), LOG, RETURN, 사용자 체인
-m 확장 모듈: state/conntrack, limit, connlimit, recent, multiport, string

iptables도 위에서부터 처음 일치한 규칙을 적용한다(LOG는 기록 후 다음 규칙으로 계속 진행). 일치하는 것이 없으면 체인의 기본 정책(-P).

예제 규칙

# ① 기본 정책: 들어오는 것과 지나가는 것은 모두 차단 (Default Deny)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# ② 루프백 허용
iptables -A INPUT -i lo -j ACCEPT

# ③ 상태 기반: 이미 수립된 연결과 관련 연결(FTP 데이터, ICMP 오류)은 허용
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#   (신형 문법) iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP

# ④ SSH는 관리망에서만
iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 22 -j ACCEPT

# ⑤ SYN Flooding 완화: SYN을 초당 10개(버스트 20)로 제한
iptables -N SYN_FLOOD
iptables -A INPUT -p tcp --syn -j SYN_FLOOD
iptables -A SYN_FLOOD -m limit --limit 10/s --limit-burst 20 -j RETURN
iptables -A SYN_FLOOD -j LOG --log-prefix "SYN_FLOOD_DROP: "
iptables -A SYN_FLOOD -j DROP

# ⑥ 웹 서비스 허용 + 출발지 IP당 동시 연결 30개 초과 차단 (HTTP Flood, Slowloris 완화)
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# ⑦ SSH 무차별 대입: 60초 안에 새 연결 5회 이상이면 차단
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --name SSH -j DROP

# ⑧ 비정상 플래그(스캔) 차단
iptables -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP     # XMAS
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP            # NULL
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP     # SYN+FIN

# ⑨ ICMP Echo 초당 1개로 제한 (ICMP Flood/Smurf 완화)
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# ⑩ 위조 출발지 차단: 외부 인터페이스로 사설 대역이 출발지인 패킷 (Ingress 필터링)
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP

# ⑪ NAT: 내부망이 외부로 나갈 때 공인 IP로 변환 / 외부 8080 → 내부 웹서버 80 포트포워딩
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80

규칙 확인 출력 읽기

# iptables -L INPUT -n -v --line-numbers
Chain INPUT (policy DROP 1532 packets, 91920 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      120  9840 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
2     8812 4105K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
3       14   840 ACCEPT     tcp  --  *      *       10.0.0.0/8           0.0.0.0/0            tcp dpt:22
4      532 31920 SYN_FLOOD  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x17/0x02
5      530 31800 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 80,443

DROP vs REJECT: DROP은 무응답이라 스캐너가 filtered로 판단하고 타임아웃까지 기다리게 됨(정보 노출 최소). REJECT는 즉시 거부 응답(RST/ICMP)을 보내 closed로 보이며 내부 사용자에겐 친절하다.

⚠️ 시험 함정 (Day 5)

📌 기출 포인트 (Day 5)

✏️ 확인 문제 (Day 5)

Q1. IPSec의 AH 프로토콜에 대한 설명으로 옳지 않은 것은?
① IP 프로토콜 번호 51을 사용한다. ② 데이터 무결성과 출처 인증을 제공한다. ③ 페이로드를 암호화하여 기밀성을 제공한다. ④ NAT 환경에서 무결성 검증 문제가 발생한다.

Q2. 원래 IP 패킷 전체를 암호화하고 새로운 IP 헤더를 붙여, 두 보안 게이트웨이 사이의 VPN 구성에 주로 쓰이는 IPSec 조합은?
① AH 전송 모드 ② AH 터널 모드 ③ ESP 전송 모드 ④ ESP 터널 모드

Q3. TLS 1.3에서 제거되지 않은 것은?
① 정적 RSA 키 교환 ② CBC 모드 암호 스위트 ③ TLS 수준 압축 ④ (EC)DHE 키 교환

Q4. 다음 Snort 룰에 대한 설명으로 옳은 것은?
alert tcp any any -> $HOME_NET 22 (msg:"SSH BF"; flags:S; threshold:type threshold, track by_src, count 5, seconds 60; sid:1000008;)
① 목적지 기준으로 60초에 5번 SYN이 오면 경보한다.
② 동일 출발지에서 60초 동안 SYN 패킷 5개마다 경보한다.
③ SYN+ACK 패킷을 탐지한다.
④ sid 값이 공식 룰 범위에 해당하므로 오류이다.

Q5. 리눅스 서버에서 이미 연결된 세션의 응답 패킷을 허용하는 iptables 규칙은?
① iptables -A INPUT -m state --state NEW -j ACCEPT
② iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
③ iptables -P INPUT ACCEPT
④ iptables -A OUTPUT -m state --state INVALID -j ACCEPT

Q6. VPN 프로토콜과 동작 계층의 연결이 옳지 않은 것은?
① PPTP – 2계층 ② L2TP – 2계층 ③ IPSec – 3계층 ④ SSL VPN – 2계층


Day 6 · 2027 신규 범위 (기출에 없음)

2027~2029 출제기준에서 새로 명시되었거나 강조된 항목. 복원 기출이 거의 없으므로 정의·비교 위주로 정확히 잡아두고, 실기용 도구 사용법은 손으로 써본다.

오늘 체크리스트

6-1. SDN (Software Defined Networking) 보안

개념: 전통적인 네트워크 장비는 한 장비 안에 "어디로 보낼지 결정하는 두뇌(제어부)"와 "실제로 보내는 몸(전달부)"이 함께 있다. SDN은 이를 분리하여, 중앙의 SDN 컨트롤러가 소프트웨어로 전체 네트워크의 경로·정책을 결정하고, 스위치는 컨트롤러가 내려준 플로우 테이블대로 패킷만 전달한다.

 ┌────────────────────────────────────────────┐
 │  응용 계층 (Application Plane)              │  방화벽 앱, 로드밸런서, 모니터링
 └──────────────────┬─────────────────────────┘
                    │  Northbound API (REST 등)
 ┌──────────────────▼─────────────────────────┐
 │  제어 계층 (Control Plane) = SDN 컨트롤러    │  ONOS, OpenDaylight — 전체 망 시야
 └──────────────────┬─────────────────────────┘
                    │  Southbound API (OpenFlow 등)
 ┌──────────────────▼─────────────────────────┐
 │  데이터 계층 (Data Plane) = 스위치들         │  플로우 테이블대로 전달만
 └────────────────────────────────────────────┘
위협 설명 대응
컨트롤러 단일 장애점/DoS 컨트롤러가 죽거나 장악되면 전체 네트워크 마비·장악 컨트롤러 이중화, 접근 통제, 강화
Packet-In Flooding 플로우 테이블에 없는 새 패킷을 대량 발생 → 컨트롤러에 질의 폭주 Packet-In 속도 제한
플로우 테이블 오버플로 스위치의 제한된 테이블 용량 고갈 규칙 수 제한, 타임아웃
컨트롤러-스위치 통신 도청·위조 평문 OpenFlow 위조로 가짜 규칙 삽입 TLS로 Southbound 채널 보호, 상호 인증
악성/취약 애플리케이션 Northbound API로 잘못된 정책 주입 API 인증·권한 분리

6-2. NetBIOS · NetBEUI · SMB · P2P

항목 설명 포트
NetBIOS 윈도우 LAN의 API/세션 서비스 규격. 컴퓨터 이름 기반 통신. TCP/IP 위에서 동작하면 NBT(NetBIOS over TCP/IP) UDP 137(이름 서비스), UDP 138(데이터그램), TCP 139(세션)
NetBEUI NetBIOS를 위한 초기 전송 프로토콜. 라우팅 불가(소규모 LAN 전용), 현재 거의 사용 X -
SMB/CIFS 윈도우 파일·프린터 공유 프로토콜. 과거 NBT(139) 위에서, 현재는 TCP 445로 직접(Direct hosting) TCP 445 (구형 139)
Samba 리눅스/유닉스에서 SMB를 구현한 소프트웨어

SMB 관련 주요 취약점·공격

공격 내용 대응
EternalBlue (MS17-010) SMBv1 원격 코드 실행 취약점 → 2017년 WannaCry 랜섬웨어가 445 포트로 웜처럼 자동 전파, NotPetya도 활용 SMBv1 비활성화, MS17-010 패치, 외부 445 차단
SMBGhost (CVE-2020-0796) SMBv3.1.1 압축 기능 처리 취약점 (웜 가능) 패치, 압축 비활성화
Null Session IPC$ 공유에 빈 사용자명·암호로 접속 → 사용자·공유 목록 열거 RestrictAnonymous 설정, 139/445 외부 차단
SMB Relay 가로챈 NTLM 인증을 다른 서버로 중계해 로그인 SMB 서명(Signing) 필수화, NTLM 제한
공유 폴더 노출 Everyone 권한 공유, 기본 관리 공유(C,ADMIN) 악용 불필요 공유 제거, 권한 최소화
 # 인터넷 경계에서 NetBIOS/SMB 차단 (iptables)
 iptables -A INPUT -i eth0 -p udp -m multiport --dports 137,138 -j DROP
 iptables -A INPUT -i eth0 -p tcp -m multiport --dports 139,445 -j DROP

P2P(Peer-to-Peer): 중앙 서버 없이 사용자 PC끼리 직접 파일을 주고받는 구조(BitTorrent 등).

6-3. 무선 LAN 보안 ★

규격 인증 암호 무결성 주요 약점
WEP 개방/공유키 RC4, 24비트 IV CRC-32 (ICV) IV가 짧아 재사용, 약한 IV, CRC는 암호학적 무결성 X → 수 분 내 키 복구
WPA PSK / 802.1X RC4 + TKIP(패킷별 키 혼합) MIC (Michael) WEP 하드웨어 재사용한 임시 대책
WPA2 PSK / 802.1X(EAP) AES-CCMP CCMP 내장 PSK의 4-way handshake 캡처 후 사전 대입, KRACK(2017, 핸드셰이크 재설치)
WPA3 SAE(Dragonfly) / 802.1X(192비트 모드) AES-GCMP/CCMP 오프라인 사전 대입 저항, PFS, PMF 필수

WEP 크래킹 개념

  1. WEP는 RC4(IV 24비트 ‖ 공유키)로 키스트림을 만든다. IV는 평문으로 전송된다.
  2. IV가 2^24(약 1,677만) 가지뿐이라 트래픽이 많으면 같은 IV가 재사용되고, 특정 약한 IV는 키 바이트 정보를 흘린다(FMS/PTW 공격).
  3. 공격자는 패킷을 수집(필요하면 ARP 재전송으로 트래픽을 인위적으로 늘림)하고 통계적으로 키를 복구한다. 도구 Aircrack-ng.
    → 결론: WEP는 어떤 설정으로도 안전하지 않다 → WPA2/WPA3 사용.

WPA2-PSK 공격 개념: 사용자가 AP에 연결할 때의 4-way handshake를 캡처(필요하면 Deauth로 재연결 유도) → 오프라인에서 사전 대입(Dictionary) 으로 비밀번호 추측. 비밀번호가 길고 복잡하면 실패. WPA3-SAE는 이 오프라인 대입을 막는다.

무선 공격 유형

공격 설명
Evil Twin (사악한 쌍둥이) 정상 AP와 같은 SSID의 가짜 AP를 더 강한 신호로 띄워 사용자를 접속시킨 뒤 MITM, 가짜 로그인 페이지(캡티브 포털)로 계정 탈취
Rogue AP (비인가 AP) 직원·공격자가 내부망에 무단 설치한 AP → 방화벽 우회 통로
Deauthentication 관리 프레임(인증 해제)을 위조해 사용자 연결을 강제로 끊음(DoS, Evil Twin 유도, 핸드셰이크 캡처)
War Driving 차량 등으로 이동하며 무선 AP 탐색·지도화
무선 재밍 전파 방해로 통신 불능
KRACK WPA2 4-way handshake의 메시지 재전송을 악용해 논스(Nonce) 재사용 유도 → 복호화
sequenceDiagram
    participant U as 사용자 단말
    participant E as Evil Twin(가짜 AP, 같은 SSID)
    participant R as 정상 AP
    E->>U: Deauth 위조 프레임 (정상 AP 명의)
    Note over U: 정상 AP 연결 끊김
    U->>E: 같은 SSID, 신호 더 강한 쪽에 재접속
    E->>U: 가짜 로그인 페이지
    U->>E: ID/PW 입력 - 탈취
    E->>R: 사용자 트래픽 중계(눈치채지 못하게)

대응: WPA3(최소 WPA2-AES), 기업은 802.1X/EAP(사용자별 인증, 서버 인증서 검증으로 Evil Twin 방지), PMF(802.11w)(관리 프레임 보호 → Deauth 위조 차단), WIPS(비인가 AP·Evil Twin 탐지), 공용 Wi-Fi에서는 VPN 사용. SSID 숨김·MAC 필터링은 쉽게 우회되는 보조 수단.

6-4. 네트워크 진단 도구 ★ (실기)

도구 용도 원리/핵심 옵션
ping 도달성·RTT 확인 ICMP Echo Request(8)/Reply(0). -c 4(리눅스 횟수), -n 4(윈도우), -s(크기)
traceroute / tracert 경로(홉) 확인 TTL을 1부터 1씩 증가시켜 각 라우터가 보내는 ICMP Time Exceeded(11) 로 경로 파악. 리눅스 기본 UDP(33434~), 윈도우 tracert는 ICMP Echo
netstat 연결·포트·라우팅 확인 -a(전체), -n(숫자), -t/-u(TCP/UDP), -p(프로세스, 리눅스), -o(PID, 윈도우), -r(라우팅 테이블), -s(통계). 리눅스 신형은 ss
arp ARP 캐시 -a(조회), -s(정적 등록), -d(삭제)
nslookup / dig DNS 질의 dig @8.8.8.8 example.com A, dig -x(역질의)
tcpdump CLI 패킷 캡처 아래 참조
Wireshark GUI 패킷 분석 캡처 필터(BPF) + 디스플레이 필터, Follow TCP Stream

traceroute 결과 읽기

$ traceroute -n 203.0.113.80
 1  192.168.0.1      0.512 ms  0.488 ms  0.471 ms
 2  10.10.0.1        3.102 ms  3.015 ms  2.998 ms
 3  * * *                                  ← 해당 라우터가 ICMP 응답을 막음(필터링)
 4  203.0.113.1     12.870 ms 12.811 ms 12.790 ms
 5  203.0.113.80    13.004 ms 12.955 ms 12.931 ms

tcpdump 핵심

옵션 의미
-i eth0 인터페이스 지정 (-i any)
-n / -nn 이름 해석 안 함 / 포트명도 숫자로
-c 100 100개만 캡처
-w file.pcap / -r file.pcap 파일로 저장 / 파일 읽기
-X / -A 16진수+ASCII / ASCII로 페이로드 출력
-v, -vv 상세 출력(TTL, IP ID 등)
-s 0 패킷 전체 길이 캡처
tcpdump -nn -i eth0 host 203.0.113.9                   # 특정 호스트
tcpdump -nn -i eth0 'tcp port 80 and src net 10.0.0.0/8'
tcpdump -nn -i eth0 'tcp[13] == 2'                     # SYN만 (플래그 바이트 = 0x02)
tcpdump -nn -i eth0 'tcp[13] == 0x29'                  # XMAS (FIN+PSH+URG)
tcpdump -nn -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-fin) == (tcp-syn|tcp-fin)'   # SYN+FIN 비정상
tcpdump -nn -i eth0 icmp and 'icmp[0] == 8'            # ICMP Echo Request
tcpdump -nn -i eth0 arp                                # ARP만 (스푸핑 관찰)
tcpdump -nn -A -i eth0 'tcp port 21'                   # FTP 평문 계정 노출 확인

6-5. Wireshark와 로그 분석 ★ (실기)

캡처 필터 vs 디스플레이 필터

구분 캡처 필터 디스플레이 필터
시점 캡처 전(저장 자체를 제한) 캡처 후 화면 표시만 제한
문법 BPF (tcpdump와 같음) Wireshark 고유 문법
예 host 10.0.0.1 and port 80 ip.addr == 10.0.0.1 && tcp.port == 80

자주 쓰는 디스플레이 필터

목적 필터
특정 IP ip.addr == 10.0.0.1, ip.src == ..., ip.dst == ...
포트 tcp.port == 80, udp.port == 53
HTTP 요청 / POST http.request, http.request.method == "POST"
특정 문자열 frame contains "passwd", http.request.uri contains "../"
SYN Flood tcp.flags.syn == 1 && tcp.flags.ack == 0
재전송·문제 tcp.analysis.retransmission, tcp.analysis.flags
ARP 스푸핑 arp.duplicate-address-detected, arp.opcode == 2
DNS dns, dns.flags.response == 1, dns.qry.name contains "bank"
TLS ClientHello tls.handshake.type == 1
ICMP 리다이렉트 icmp.type == 5
제외 !(arp or dns)

SSH 무차별 대입 로그 (/var/log/secure, 데비안 계열은 /var/log/auth.log)

Dec 22 03:14:07 web01 sshd[21877]: Failed password for root from 203.0.113.77 port 51122 ssh2
Dec 22 03:14:09 web01 sshd[21877]: Failed password for root from 203.0.113.77 port 51122 ssh2
Dec 22 03:14:12 web01 sshd[21881]: Failed password for invalid user admin from 203.0.113.77 port 51130 ssh2
Dec 22 03:14:15 web01 sshd[21885]: Failed password for invalid user oracle from 203.0.113.77 port 51134 ssh2
Dec 22 03:15:40 web01 sshd[21950]: Accepted password for test from 203.0.113.77 port 51188 ssh2
$ grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -3
   2841 203.0.113.77
     12 10.0.0.15
      3 10.0.0.22

방화벽(iptables LOG) 로그

Dec 22 14:02:11 fw01 kernel: SYN_FLOOD_DROP: IN=eth0 OUT= MAC=... SRC=45.33.12.7 DST=192.168.10.5 LEN=40 TOS=0x00 PREC=0x00 TTL=243 ID=54321 PROTO=TCP SPT=38012 DPT=80 WINDOW=512 RES=0x00 SYN URGP=0

6-6. 악성코드·패킷 분석 도구

분류 도구 용도
정적 분석 (실행 X) PEiD, Exeinfo PE, Detect It Easy 패킹 여부·컴파일러 식별
PEview, PEStudio, CFF Explorer PE 헤더, 임포트 함수(IAT), 섹션 분석
strings 파일 안의 문자열(URL, IP, 명령) 추출
IDA, Ghidra 디스어셈블러/디컴파일러
YARA 패턴(룰) 기반 악성코드 분류·탐지
VirusTotal 다중 백신 엔진 검사(해시 조회)
동적 분석 (실행) Process Monitor, Process Explorer 파일·레지스트리·프로세스 행위 실시간 감시
Regshot 실행 전후 레지스트리 스냅샷 비교
Autoruns 자동 실행(지속성) 위치 확인
TCPView 프로세스별 네트워크 연결
OllyDbg, x64dbg, WinDbg 디버거
Cuckoo Sandbox, ANY.RUN 자동화된 샌드박스 행위 분석
메모리 분석 Volatility 메모리 덤프에서 프로세스·네트워크·주입 코드 분석
패킷 분석 tcpdump, Wireshark, tshark, NetworkMiner(파일·자격증명 추출), ngrep 트래픽 분석
네트워크 보안 모니터링 Snort, Suricata, Zeek(Bro) 탐지·메타데이터 로그
로그 분석 Splunk, ELK(Elasticsearch·Logstash·Kibana) 로그 수집·검색·시각화 (SIEM 기반)
무결성 Tripwire, AIDE 파일 변경 탐지 (HIDS)

분석 순서(일반): 기초 정적 분석(해시·strings·패킹 확인) → 동적 분석(격리된 VM/샌드박스에서 실행·관찰) → 고급 정적 분석(디스어셈블) → 고급 동적 분석(디버깅). 분석 환경은 반드시 격리(스냅샷 VM, 내부망 분리).

6-7. SASE · ZTNA · XDR · EDR ★

제로 트러스트 (Zero Trust): "절대 신뢰하지 말고, 항상 검증하라(Never Trust, Always Verify)". 내부망이라는 이유만으로 신뢰하지 않는다. 모든 접근 요청마다 사용자·기기·위치·시간·행위를 검증하고 최소 권한만 준다. (NIST SP 800-207: 정책 결정 지점 PDP(PE·PA) / 정책 시행 지점 PEP)

ZTNA vs VPN

 [전통 VPN]                                  [ZTNA]
 사용자 ═══ VPN 터널 ═══▶ [VPN 게이트웨이]     사용자 ──▶ [ZTNA 브로커/정책 엔진]
                            │                            │ ① 사용자·기기 상태·상황 검증
           ┌────────────────┼─────────────┐              │ ② 허가된 앱 "A"에만 연결
           ▼                ▼             ▼              ▼
         앱 A             앱 B          DB 서버          앱 A   (앱 B, DB는 사용자에게 보이지도 않음)
   한 번 인증 → 내부 네트워크 전체 접근        매 세션 검증 → 애플리케이션 단위 최소 접근
   (침해 시 내부 횡적 이동 쉬움)               (공격 표면 최소화, 횡적 이동 차단)
비교 VPN ZTNA
신뢰 모델 경계 기반 (접속하면 내부=신뢰) 제로 트러스트
접근 범위 네트워크 단위 애플리케이션 단위
검증 접속 시 1회 지속적·상황 인식 검증
내부 자원 노출 내부 IP 대역이 보임 허가된 앱만 보임(나머지는 은닉)
횡적 이동 쉬움 어려움
용어 정의
SASE (Secure Access Service Edge, "새시") 네트워크(SD-WAN) 와 보안(SWG, CASB, ZTNA, FWaaS) 기능을 클라우드 서비스로 통합 제공. 사용자가 어디 있든 가까운 클라우드 PoP에서 보안 적용 (Gartner, 2019)
SSE (Security Service Edge) SASE에서 보안 부분만(SWG + CASB + ZTNA)
SWG 보안 웹 게이트웨이 — 웹 접속 필터링·악성 URL 차단
CASB 클라우드 접근 보안 중개 — SaaS 사용 가시성·통제·DLP
FWaaS 클라우드로 제공되는 방화벽
EDR (Endpoint Detection & Response) 엔드포인트(PC·서버) 의 프로세스·파일·레지스트리·네트워크 행위를 지속 기록·분석 → 위협 탐지, 격리·프로세스 종료·롤백 등 대응. 백신(시그니처)보다 행위 중심
NDR (Network D&R) 네트워크 트래픽 기반 탐지·대응
XDR (eXtended D&R) 엔드포인트(EDR) + 네트워크 + 클라우드 + 이메일 + ID 등 여러 계층의 데이터를 통합 상관 분석하여 탐지·대응
MDR 탐지·대응을 외부 전문 업체가 관리형 서비스로 제공
비교 EDR XDR SIEM
데이터 범위 엔드포인트 엔드포인트+네트워크+클라우드+메일 모든 로그
강점 단말 행위 상세, 단말 대응 계층 간 자동 상관 + 통합 대응 장기 보관·컴플라이언스·유연한 검색

6-8. (실기) 클라우드 네트워크 보안 — VPC · Security Group · NACL

 ┌──────────────────────── VPC 10.0.0.0/16 ─────────────────────────┐
 │                                                                  │
 │  ┌── 퍼블릭 서브넷 10.0.1.0/24 ──┐   ┌── 프라이빗 서브넷 10.0.2.0/24 ─┐ │
 │  │  [NACL-A]                     │   │  [NACL-B]                     │ │
 │  │   웹 서버 ⟨SG-Web⟩             │──▶│   DB 서버 ⟨SG-DB⟩              │ │
 │  │   NAT 게이트웨이               │   │   (인터넷 직접 접근 불가)        │ │
 │  └──────────────┬────────────────┘   └───────────────────────────────┘ │
 │           [인터넷 게이트웨이]                                         │
 └──────────────────┼───────────────────────────────────────────────┘
                 인터넷
비교 Security Group Network ACL
적용 단위 인스턴스(네트워크 인터페이스) 서브넷
상태 Stateful — 허용된 요청의 응답은 자동 허용 Stateless — 응답 트래픽도 별도 규칙 필요
규칙 종류 허용(Allow)만 허용 + 거부(Deny)
평가 방식 모든 규칙을 평가해 하나라도 허용이면 허용 규칙 번호가 낮은 것부터 순서대로, 처음 일치 적용
기본값 인바운드 전부 거부, 아웃바운드 전부 허용 기본 NACL은 모두 허용 (사용자 생성 NACL은 모두 거부)
용도 1차 세밀한 접근 통제 서브넷 경계의 추가 방어, 특정 IP 명시적 차단

Security Group 예 (SG-DB)

유형 프로토콜 포트 소스
MySQL TCP 3306 SG-Web (보안그룹 ID를 소스로 지정 → 웹 서버만 허용)
SSH TCP 22 10.0.0.0/16 (관리용, 내부만)

NACL 예 (NACL-A, 퍼블릭 서브넷)

규칙 # 방향 프로토콜 포트 소스/대상 허용/거부
90 인바운드 모두 모두 203.0.113.0/24 (공격 대역) DENY
100 인바운드 TCP 443 0.0.0.0/0 ALLOW
110 인바운드 TCP 1024-65535 0.0.0.0/0 ALLOW (← 서버가 밖으로 나간 요청의 응답용 임시 포트)
100 아웃바운드 TCP 1024-65535 0.0.0.0/0 ALLOW (← 클라이언트에게 보내는 응답)
* 양방향 모두 모두 0.0.0.0/0 DENY (기본)

⚠️ 시험 함정 (Day 6)

📌 예상 출제 포인트 (Day 6)

✏️ 확인 문제 (Day 6)

Q1. SDN 구조에서 컨트롤러와 네트워크 스위치 사이의 통신에 사용되는 대표 프로토콜과 인터페이스 명칭이 바르게 짝지어진 것은?
① REST API – Northbound ② OpenFlow – Southbound ③ OpenFlow – Northbound ④ SNMP – Eastbound

Q2. 2017년 WannaCry 랜섬웨어의 자동 전파에 악용된 취약점과 관련 포트로 옳은 것은?
① SMBv1 EternalBlue – TCP 445 ② Heartbleed – TCP 443 ③ SMBGhost – UDP 137 ④ NTP monlist – UDP 123

Q3. WEP의 취약점에 대한 설명으로 옳지 않은 것은?
① 24비트 IV가 평문으로 전송되고 재사용된다. ② 무결성 검사에 CRC-32를 사용한다. ③ AES-CCMP를 사용하여 키 복구가 어렵다. ④ RC4 스트림 암호를 사용한다.

Q4. 클라우드 VPC의 Security Group과 Network ACL에 대한 설명으로 옳은 것은?
① Security Group은 서브넷 단위로 적용되며 거부 규칙을 지원한다.
② Network ACL은 상태 기반(Stateful)이므로 응답 트래픽 규칙이 필요 없다.
③ Security Group은 상태 기반으로, 허용된 인바운드 요청의 응답은 자동으로 허용된다.
④ Network ACL은 모든 규칙을 평가하여 하나라도 허용이면 허용한다.

Q5. 다음 설명에 가장 적합한 것은?
"사용자가 VPN으로 내부망 전체에 접속하는 대신, 매 요청마다 사용자 신원과 단말 상태를 검증하여 허가된 특정 애플리케이션에만 연결해 준다."
① SASE ② ZTNA ③ EDR ④ NAC


Day 7 · 주간 정리

주간 구조 요약

공격 → 원리 → 탐지 → 대응 한 장 정리

공격 원리(약점) 탐지 단서 대응
SYN Flooding SYN만 보내 half-open 큐 고갈 (TCP 상태 + IP 위조) SYN_RECV 다수, ACK 없는 SYN SYN Cookie, 백로그↑, 재전송↓, 임계치
Smurf / Fraggle ICMP(UDP 7·19) + Directed Broadcast + 출발지 위조 대량 Echo Reply no ip directed-broadcast
Land src = dst sameip 출발지=목적지 차단
Ping of Death 재조합 > 65,535 큰 단편 ICMP 패치
Teardrop / Bonk / Boink 단편 오프셋 겹침/동일/어긋남 겹치는 오프셋 패치
HTTP GET / CC 정상 요청 폭주 / no-cache 동일 IP·URL 반복 임계치, 챌린지, CDN
Slowloris / RUDY / Slow Read 헤더 미완 / 느린 바디 / 작은 윈도우 장시간 미완료 연결 다수 타임아웃, 연결 수 제한
DRDoS 위조 요청 → 반사·증폭(UDP) 요청 안 한 응답 폭주 반사체 설정, BCP38/uRPF
포트 스캔 열림/닫힘 응답 차이 순차 포트, 비정상 플래그 상태 기반 FW, IDS
ARP 스푸핑 ARP 무인증·무상태 MAC 중복, arpwatch 정적 ARP, DAI
MAC Flooding CAM 테이블 고갈 대량 MAC 포트 보안
ICMP 리다이렉트 type 5 위조 라우팅 테이블 변경 Redirect 무시
DNS 스푸핑 / 포이즈닝 먼저 온 응답 채택, UDP 중복 응답, TTL 이상 DNSSEC, 포트 랜덤화
세션 하이재킹 SEQ/ACK만으로 정당성 판단 ACK Storm 암호화, 재인증
리버스 쉘 아웃바운드 허용 악용 셸이 외부 연결 Egress 필터링
SSL Stripping 첫 HTTP 접속 다운그레이드 HTTP로 로그인 HSTS
Evil Twin 같은 SSID 가짜 AP WIPS WPA3, 802.1X, PMF

보안 기술 핵심어

기술 3단어
Stateful 방화벽 상태 테이블, 응답 자동 허용
스크린드 서브넷 DMZ, 가장 안전, 고비용
오용 탐지 / 이상 탐지 오탐↓ 신종✗ / 신종○ 오탐↑
IDS / IPS Out-of-band 경보 / In-line 차단
ESM / SIEM / SOAR 이벤트 통합 / 상관 분석 / 자동 대응
UTM / NAC / DLP 기능 통합 / 단말 검사 / 유출 방지
TLS Handshake·CCS·Alert·Record, 1.3 = 1-RTT·PFS
IPSec AH(51, 암호화X) / ESP(50) / IKE(UDP 500) / NAT-T(4500)
VPN PPTP·L2TP(2) / IPSec(3) / SSL(4~7)
ZTNA / SASE / XDR 앱 단위 / 네트워크+보안 클라우드 / 다계층 통합
SG / NACL Stateful·Allow·인스턴스 / Stateless·Deny·서브넷

미니 모의고사 (20문항, 원문 창작)

M1. SYN Flooding 공격을 받는 리눅스 서버에서 netstat -an으로 확인했을 때 비정상적으로 많이 나타나는 상태는?
① TIME_WAIT ② SYN_RECV ③ CLOSE_WAIT ④ FIN_WAIT2

M2. Fraggle 공격에 이용되는 프로토콜과 포트로 옳은 것은?
① ICMP Echo ② TCP 80 ③ UDP 7, 19 ④ UDP 53

M3. 다음 중 애플리케이션 계층 DoS 공격이 아닌 것은?
① Slowloris ② RUDY ③ CC Attack ④ Teardrop

M4. NTP 서버를 반사체로 이용한 증폭 공격을 막기 위해 서버 측에서 해야 할 조치는?
① SYN Cookie 활성화 ② monlist 기능 비활성화 ③ HSTS 설정 ④ 정적 ARP 등록

M5. 포트 스캔 결과 대상이 "SYN+ACK"로 응답했고, 스캐너가 곧바로 RST를 보냈다. 이 스캔과 포트 상태는?
① Connect 스캔 – 닫힘 ② SYN 스캔 – 열림 ③ ACK 스캔 – 필터링 ④ FIN 스캔 – 열림

M6. UDP 스캔에서 닫힌 포트를 판단하는 근거는?
① TCP RST 수신 ② ICMP Echo Reply 수신 ③ ICMP Destination Unreachable(Port Unreachable) 수신 ④ 무응답

M7. 좀비 호스트의 IP ID 증가량을 관찰하여 스캐너의 실제 IP를 대상에게 노출하지 않는 스캔은?
① Decoy 스캔 ② Idle 스캔 ③ XMAS 스캔 ④ Firewalking

M8. 스위치 환경에서 스니핑을 가능하게 하는 공격이 아닌 것은?
① 스위치 재밍 ② ARP 리다이렉트 ③ ICMP 리다이렉트 ④ SYN Flooding

M9. ARP 스푸핑의 근본 원인으로 가장 적절한 것은?
① ARP는 TCP 위에서 동작한다. ② ARP는 요청하지 않은 응답도 인증 없이 캐시에 반영한다. ③ ARP는 암호화를 기본 제공한다. ④ ARP는 라우터를 넘어 전달된다.

M10. DNS 응답에 전자서명을 추가하여 응답의 출처와 무결성을 검증하는 기술은?
① DoH ② DNSSEC ③ DNS RRL ④ Split DNS

M11. 세션 하이재킹이 진행될 때 탐지 단서가 되는 현상은?
① 브로드캐스트 스톰 ② ACK Storm ③ ARP 테이블 초기화 ④ TTL 증가

M12. 방화벽 유형 중 OSI 5계층에서 동작하며 SOCKS가 대표적인 것은?
① 패킷 필터링 ② 애플리케이션 게이트웨이 ③ 서킷 게이트웨이 ④ 상태 기반 검사

M13. 오용 탐지(Misuse Detection) IDS의 특징으로 옳은 것은?
① 제로데이 공격 탐지에 강하다. ② 정상 행위 학습 기간이 필요하다. ③ 오탐률이 낮지만 시그니처에 없는 공격은 탐지하지 못한다. ④ 통계적 분석 기법을 주로 사용한다.

M14. IDS의 처리 단계를 순서대로 나열한 것은?
① 정보 수집 → 분석 및 탐지 → 정보 가공 및 축약 → 보고 및 대응
② 정보 수집 → 정보 가공 및 축약 → 분석 및 탐지 → 보고 및 대응
③ 정보 가공 및 축약 → 정보 수집 → 분석 및 탐지 → 보고 및 대응
④ 분석 및 탐지 → 정보 수집 → 정보 가공 및 축약 → 보고 및 대응

M15. 여러 보안 장비와 서버의 로그를 수집하고 상관 분석하여 위협을 탐지하며, 장기 보관 기능을 갖춘 시스템은?
① UTM ② SIEM ③ NAC ④ WAF

M16. TLS 1.2에서 "이후부터 협상된 암호 방식을 적용한다"는 신호를 전달하는 프로토콜은?
① Alert ② Record ③ ChangeCipherSpec ④ Heartbeat

M17. 사용자가 처음 HTTP로 접속하는 순간을 노려 HTTPS 연결을 HTTP로 바꿔치기하는 공격과 대응이 바르게 연결된 것은?
① POODLE – SSL 3.0 비활성화 ② SSL Stripping – HSTS ③ Heartbleed – 인증서 재발급 ④ BEAST – TLS 압축 비활성화

M18. IPSec에서 NAT 장비를 통과시키기 위해 ESP 패킷을 UDP로 캡슐화할 때 사용하는 포트는?
① UDP 500 ② UDP 1701 ③ UDP 4500 ④ TCP 1723

M19. 다음 Snort 룰 옵션 중 "페이로드 처음부터 몇 바이트 안에서만 content를 검색할지"를 지정하는 것은?
① offset ② depth ③ distance ④ within

M20. iptables에서 패킷을 차단하면서 송신자에게 거부 응답을 보내는 타깃은?
① ACCEPT ② DROP ③ REJECT ④ RETURN

채점

카드

오답 노트


네비게이션

이전 다음
◀ Week06_정보보안 관리 및 법규 Week08_시스템 보안 ▶